Skip to main content

/dev/ttyACM0 Permission Denied

You have not yet logged out since being added to dialout. Use this wrapper until you do:
sg dialout -c '. /opt/ros/jazzy/setup.sh; . ~/turtlebot3_ws/install/setup.sh; \
  export TURTLEBOT3_MODEL=burger OPENCR_PORT=/dev/ttyACM0 LDS_MODEL=LDS-02; \
  ros2 launch turtlebot3_bringup robot.launch.py'
After one logout/login this wrapper is no longer needed.

LiDAR Scan Empty / Cartographer Stuck

Queue waiting for data: (0, scan) usually means the wrong LDS model is set.
echo $LDS_MODEL    # must be LDS-02
ls /dev/ttyUSB0    # must exist
If LDS_MODEL=LDS-01, fix it:
sed -i 's/export LDS_MODEL=LDS-01/export LDS_MODEL=LDS-02/' ~/.bashrc
source ~/.bashrc

package 'ld08_driver' not found

sudo apt install -y ros-jazzy-ld08-driver

cmd_vel Commands Do Nothing

ROS 2 Jazzy changed the cmd_vel topic type from geometry_msgs/Twist to geometry_msgs/TwistStamped. If you are publishing Twist directly (e.g. from a custom node or an older tutorial), add a header field:
from geometry_msgs.msg import TwistStamped
from builtin_interfaces.msg import Time

msg = TwistStamped()
msg.header.stamp = self.get_clock().now().to_msg()
msg.twist.linear.x = 0.2
msg.twist.angular.z = 0.0
publisher.publish(msg)
The built-in turtlebot3_teleop teleop_keyboard node already handles this correctly — this only affects custom publishers.

Map Saver Fails Silently

Always include -t /map explicitly:
ros2 run nav2_map_server map_saver_cli -t /map -f ~/my_map

apt Locked by Background Process

sudo systemctl stop apt-daily.service apt-daily-upgrade.service packagekit.service
sudo pkill -f aptd || true
sudo apt update