**Nano入门教程软件篇-安装Turtlebot(melodic版本) **
说明:
- 介绍如何在Nano的ubuntu 18.04系统下安装turtlebot
步骤:
-
先完成ROS melodic安装,参考教程
-
编译turtlebot过程会提示缺少opencv3.2的库文件,下面教程安装
-
完成opencv3.2的安装,参考教程:https://www.ncnynl.com/archives/201903/2900.html
-
复制所需要的库到对应的目录
cd /lib/aarch64-linux-gnu sudo ln -s /usr/local/lib/libopencv_aruco.so.3.2.0 libopencv_aruco.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudaimgproc.so.3.2.0 libopencv_cudaimgproc.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_flann.so.3.2.0 libopencv_flann.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_phase_unwrapping.so.3.2.0 libopencv_phase_unwrapping.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_surface_matching.so.3.2.0 libopencv_surface_matching.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_bgsegm.so.3.2.0 libopencv_bgsegm.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudalegacy.so.3.2.0 libopencv_cudalegacy.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_freetype.so.3.2.0 libopencv_freetype.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_photo.so.3.2.0 libopencv_photo.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_text.so.3.2.0 libopencv_text.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_bioinspired.so.3.2.0 libopencv_bioinspired.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudaobjdetect.so.3.2.0 libopencv_cudaobjdetect.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_fuzzy.so.3.2.0 libopencv_fuzzy.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_plot.so.3.2.0 libopencv_plot.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_videoio.so.3.2.0 libopencv_videoio.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_calib3d.so.3.2.0 libopencv_calib3d.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudaoptflow.so.3.2.0 libopencv_cudaoptflow.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_hdf.so.3.2.0 libopencv_hdf.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_reg.so.3.2.0 libopencv_reg.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_video.so.3.2.0 libopencv_video.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_ccalib.so.3.2.0 libopencv_ccalib.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudastereo.so.3.2.0 libopencv_cudastereo.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_highgui.so.3.2.0 libopencv_highgui.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_rgbd.so.3.2.0 libopencv_rgbd.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_videostab.so.3.2.0 libopencv_videostab.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_core.so.3.2.0 libopencv_core.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudawarping.so.3.2.0 libopencv_cudawarping.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_imgcodecs.so.3.2.0 libopencv_imgcodecs.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_saliency.so.3.2.0 libopencv_saliency.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_viz.so.3.2.0 libopencv_viz.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudaarithm.so.3.2.0 libopencv_cudaarithm.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudev.so.3.2.0 libopencv_cudev.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_imgproc.so.3.2.0 libopencv_imgproc.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_shape.so.3.2.0 libopencv_shape.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_xfeatures2d.so.3.2.0 libopencv_xfeatures2d.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudabgsegm.so.3.2.0 libopencv_cudabgsegm.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_datasets.so.3.2.0 libopencv_datasets.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_line_descriptor.so.3.2.0 libopencv_line_descriptor.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_stereo.so.3.2.0 libopencv_stereo.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_ximgproc.so.3.2.0 libopencv_ximgproc.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudacodec.so.3.2.0 libopencv_cudacodec.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_dpm.so.3.2.0 libopencv_dpm.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_ml.so.3.2.0 libopencv_ml.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_stitching.so.3.2.0 libopencv_stitching.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_xobjdetect.so.3.2.0 libopencv_xobjdetect.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudafeatures2d.so.3.2.0 libopencv_cudafeatures2d.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_face.so.3.2.0 libopencv_face.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_objdetect.so.3.2.0 libopencv_objdetect.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_structured_light.so.3.2.0 libopencv_structured_light.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_xphoto.so.3.2.0 libopencv_xphoto.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_cudafilters.so.3.2.0 libopencv_cudafilters.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_features2d.so.3.2.0 libopencv_features2d.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_optflow.so.3.2.0 libopencv_optflow.so.3.2.0 sudo ln -s /usr/local/lib/libopencv_superres.so.3.2.0 libopencv_superres.so.3.2.0
- 安装依赖:
$ sudo apt-get install ros-melodic-kobuki-* $ sudo apt-get install ros-melodic-ecl-streams $ sudo apt-get install libusb-dev $ sudo apt-get install libspnav-dev $ sudo apt-get install ros-melodic-joystick-drivers $ sudo apt-get install bluetooth $ sudo apt-get install libbluetooth-dev $ sudo apt-get install libcwiid-dev
- 新建工作空间,准备相关包
$ mkdir -p ~/turtlebot_ws/src $ cd ~/turtlebot_ws/src $ git clone https://github.com/turtlebot/turtlebot_simulator $ git clone https://github.com/turtlebot/turtlebot.git $ git clone https://github.com/turtlebot/turtlebot_apps.git $ git clone https://github.com/udacity/robot_pose_ekf $ git clone https://github.com/ros-perception/depthimage_to_laserscan.git #需要依赖opencv3.2 $ git clone https://github.com/yujinrobot/kobuki_msgs.git $ git clone https://github.com/yujinrobot/kobuki_desktop.git $ cd kobuki_desktop/ $ rm -r kobuki_qtestsuite $ git clone https://github.com/toeklk/orocos-bayesian-filtering.git $ git clone https://github.com/turtlebot/turtlebot_msgs.git $ git clone https://github.com/ros-drivers/joystick_drivers.git
- 复制kobuki和yujin_ocs依赖库到turtlebot_ws/src工作空间下
$ mkdir -p ~/repos/ $ cd ~/repos/ $ git clone https://github.com/yujinrobot/kobuki.git $ cp -r kobuki/* ~/turtlebot_ws/src/ $ git clone https://github.com/yujinrobot/yujin_ocs.git $ cp -r yujin_ocs/yocs_cmd_vel_mux/ yujin_ocs/yocs_controllers ~/turtlebot_ws/src/
- 编译工作空间
$ cd ~/turtlebot_ws $ rosdep install --from-paths src --ignore-src -r -y $ catkin_make
- 添加工作空间到bashrc文件
echo "source ~/turtlebot_ws/devel/setup.bash" >> ~/.bashrc
- 启用环境变量
source ~/.bashrc
测试:
- 启动底盘
roslaunch turtlebot_bringup minimal.launch
- 显示如下:
ubuntu@AiROS-XA:~/turtlebot_ws/src$ roslaunch turtlebot_bringup minimal.launch ... logging to /home/ubuntu/.ros/log/a22c211a-7888-11e9-8396-00044bcb943f/roslaunch-AiROS-XA-6402.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. xacro: in-order processing became default in ROS Melodic. You can drop the option. started roslaunch server http://AiROS-XA:41151/ SUMMARY ======== PARAMETERS * /bumper2pointcloud/pointcloud_radius: 0.24 * /cmd_vel_mux/yaml_cfg_file: /home/ubuntu/turt... * /diagnostic_aggregator/analyzers/input_ports/contains: ['Digital Input',... * /diagnostic_aggregator/analyzers/input_ports/path: Input Ports * /diagnostic_aggregator/analyzers/input_ports/remove_prefix: mobile_base_nodel... * /diagnostic_aggregator/analyzers/input_ports/timeout: 5.0 * /diagnostic_aggregator/analyzers/input_ports/type: diagnostic_aggreg... * /diagnostic_aggregator/analyzers/kobuki/contains: ['Watchdog', 'Mot... * /diagnostic_aggregator/analyzers/kobuki/path: Kobuki * /diagnostic_aggregator/analyzers/kobuki/remove_prefix: mobile_base_nodel... * /diagnostic_aggregator/analyzers/kobuki/timeout: 5.0 * /diagnostic_aggregator/analyzers/kobuki/type: diagnostic_aggreg... * /diagnostic_aggregator/analyzers/power/contains: ['Battery', 'Lapt... * /diagnostic_aggregator/analyzers/power/path: Power System * /diagnostic_aggregator/analyzers/power/remove_prefix: mobile_base_nodel... * /diagnostic_aggregator/analyzers/power/timeout: 5.0 * /diagnostic_aggregator/analyzers/power/type: diagnostic_aggreg... * /diagnostic_aggregator/analyzers/sensors/contains: ['Cliff Sensor', ... * /diagnostic_aggregator/analyzers/sensors/path: Sensors * /diagnostic_aggregator/analyzers/sensors/remove_prefix: mobile_base_nodel... * /diagnostic_aggregator/analyzers/sensors/timeout: 5.0 * /diagnostic_aggregator/analyzers/sensors/type: diagnostic_aggreg... * /diagnostic_aggregator/base_path: * /diagnostic_aggregator/pub_rate: 1.0 * /mobile_base/base_frame: base_footprint * /mobile_base/battery_capacity: 16.5 * /mobile_base/battery_dangerous: 13.2 * /mobile_base/battery_low: 14.0 * /mobile_base/cmd_vel_timeout: 0.6 * /mobile_base/device_port: /dev/kobuki * /mobile_base/odom_frame: odom * /mobile_base/publish_tf: True * /mobile_base/use_imu_heading: True * /mobile_base/wheel_left_joint_name: wheel_left_joint * /mobile_base/wheel_right_joint_name: wheel_right_joint * /robot/name: turtlebot * /robot/type: turtlebot * /robot_description: <?xml version="1.... * /robot_state_publisher/publish_frequency: 5.0 * /rosdistro: melodic * /rosversion: 1.14.3 * /use_sim_time: False NODES / bumper2pointcloud (nodelet/nodelet) cmd_vel_mux (nodelet/nodelet) diagnostic_aggregator (diagnostic_aggregator/aggregator_node) mobile_base (nodelet/nodelet) mobile_base_nodelet_manager (nodelet/nodelet) robot_state_publisher (robot_state_publisher/robot_state_publisher) auto-starting new master process[master]: started with pid [6415] ROS_MASTER_URI=http://localhost:11311 setting /run_id to a22c211a-7888-11e9-8396-00044bcb943f process[rosout-1]: started with pid [6426] started core service [/rosout] process[robot_state_publisher-2]: started with pid [6434] process[diagnostic_aggregator-3]: started with pid [6435] process[mobile_base_nodelet_manager-4]: started with pid [6440] process[mobile_base-5]: started with pid [6444] process[bumper2pointcloud-6]: started with pid [6448] process[cmd_vel_mux-7]: started with pid [6451]
- 启动键盘控制
roslaunch turtlebot_teleop keyboard_teleop.launch
- 显示如下:
ubuntu@AiROS-XA:~$ roslaunch turtlebot_teleop keyboard_teleop.launch ... logging to /home/ubuntu/.ros/log/a22c211a-7888-11e9-8396-00044bcb943f/roslaunch-AiROS-XA-6533.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://AiROS-XA:41229/ SUMMARY ======== PARAMETERS * /rosdistro: melodic * /rosversion: 1.14.3 * /turtlebot_teleop_keyboard/scale_angular: 1.5 * /turtlebot_teleop_keyboard/scale_linear: 0.5 NODES / turtlebot_teleop_keyboard (turtlebot_teleop/turtlebot_teleop_key) ROS_MASTER_URI=http://localhost:11311 process[turtlebot_teleop_keyboard-1]: started with pid [6552] Control Your Turtlebot! --------------------------- Moving around: u i o j k l m , . q/z : increase/decrease max speeds by 10% w/x : increase/decrease only linear speed by 10% e/c : increase/decrease only angular speed by 10% space key, k : force stop anything else : stop smoothly CTRL-C to quit currently: speed 0.2 turn 1