Yes, I’ve used the exact same technique in reinforcement learning (using PPO, rather than DQN, but the concepts still apply).
Concatenating a 2D image and a 1D vector isn’t going to work unless you flatten the image. But you don’t want to do that, because then you lose all the benefits of CNNs.
Here’s some code to show what I mean (I haven’t ran it, no guarantees it wont throw errors):
image_extractor = nn.Sequential(
    nn.Conv2d(1, 32, 8, stride=4),
    nn.ReLU(),
    nn.Conv2d(32, 64, 4, stride=2),
    nn.ReLU(),
    nn.Conv2d(64, 32, 3, stride=1),
    nn.ReLU(),
    Flatten(),
    nn.Linear(32 * 7 * 7, 64),  # Assuming 80x80x1 image
    nn.ReLU()
)

linear_extractor = nn.Sequential(
    nn.Linear(7, 64),
    nn.ReLU(),
    nn.Linear(64, 64),
    nn.ReLU()
)

q_network = nn.Sequential(
    nn.Linear(128, 64),
    nn.ReLU(),
    nn.Linear(128, 4)  # Assuming 4 actions
)

image_obs = torch.Tensor(camera.processed_image)
linear_obs = torch.from_numpy(np.concatenate(pose, sensor_range), axis=0))

image_features = image_extractor(image_obs)
linear_features = linear_extractor(linear_obs)
features = torch.cat([image_features, linear_features])

q_values = q_network(features)