using pointcloud_to_laserscan package with turtlebot and d435 camera
I am having problems using the pointcloud_to_laserscan package with turtlebot and d435 camera. I want to start the pointcloud_to_laserscan
node through the turtlebot 3dsensor.launch
file. when I look at the rqt_graph
I see the node is started but unable to receive pointcoud data. I have made sure to remap to what I think is the accurate topic for pointcloud for d435 camera(camera/depth/points
, I also tried camera/depth_registered/points
). Maybe it's another problem but I don't know. This is my 3sdsensor.launch
file(The package in question, I add last):
<!--
Turtlebot is a bit low on horsepower...
We use openni_camera here, turn everything on by default
(allows the user to conveniently see everything when
launching this on its own - use with
turtebot_rviz_launchers/view_robot.launch to visualise)
and provide args to disable them so you can optimise the
horsepower for your application.
For an example of disabling processing modules, check
any of the turtlebot_rapps (e.g. android_make_a_map.launch
only enables scan_processing for depthimage_to_laserscan and
rgb_processing for the android tele-view).
-->
<launch>
<!-- "camera" should uniquely identify the device. All topics are pushed down
into the "camera" namespace, and it is prepended to tf frame ids. -->
<arg name="camera" default="camera"/>
<arg name="publish_tf" default="false"/>
<arg name="3d_sensor" default="$(env TURTLEBOT_3D_SENSOR)"/> <!-- kinect, asus_xtion_pro -->
<!-- Factory-calibrated depth registration -->
<arg name="depth_registration" default="true"/>
<arg if="$(arg depth_registration)" name="depth" value="depth_registered" />
<arg unless="$(arg depth_registration)" name="depth" value="depth" />
<!-- Processing Modules -->
<arg name="rgb_processing" default="true"/>
<arg name="ir_processing" default="true"/>
<arg name="depth_processing" default="true"/>
<arg name="depth_registered_processing" default="true"/>
<arg name="disparity_processing" default="true"/>
<arg name="disparity_registered_processing" default="true"/>
<arg name="scan_processing" default="true"/>
<!-- Worker threads for the nodelet manager -->
<arg name="num_worker_threads" default="4" />
<!-- Laserscan topic -->
<arg name="scan_topic" default="scan"/>
<include file="$(find turtlebot_bringup)/launch/includes/3dsensor/$(arg 3d_sensor).launch.xml">
<arg name="camera" value="$(arg camera)"/>
<arg name="publish_tf" value="$(arg publish_tf)"/>
<arg name="depth_registration" value="$(arg depth_registration)"/>
<arg name="num_worker_threads" value="$(arg num_worker_threads)" />
<!-- Processing Modules -->
<arg name="rgb_processing" value="$(arg rgb_processing)"/>
<arg name="ir_processing" value="$(arg ir_processing)"/>
<arg name="depth_processing" value="$(arg depth_processing)"/>
<arg name="depth_registered_processing" value="$(arg depth_registered_processing)"/>
<arg name="disparity_processing" value="$(arg disparity_processing)"/>
<arg name="disparity_registered_processing" value="$(arg disparity_registered_processing)"/>
</include>
<!-- Laserscan
This uses lazy subscribing, so will not activate until scan is requested.
-->
<!--remap from="$(arg camera)/image" to="$(arg camera)/$(arg depth)/image_raw"/-->
<!--group if="$(arg scan_processing)"-->
<node pkg="nodelet" type="nodelet" name="pointcloud_to_laserscan" args="load pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet $(arg camera)_nodelet_manager">
<remap from="cloud_in" to="$(arg camera)/depth/points" />
<remap from="$(arg camera)/scan" to="$(arg scan_topic)"/>
</node>
<!--/group -->
</launch>
Edit: I get this in terminal @ravijoshi(I only show the parts I think are ...
Hi, are you sure the TFs are connected correctly? If your frame ids are not correct it will not work.
@goktuggurler How would I make sure the TFs are connected correctly in this case?