diff --git a/README.md b/README.md index 70e49855..3d2cdd7d 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ Use it to learn how to assemble, configure, pilot and program autonomous CLEVER Image includes: -* Raspbian Stretch -* ROS Kinetic +* Raspbian Buster +* ROS Melodic * Configured networking * OpenCV * mavros @@ -30,7 +30,7 @@ API description (in Russian) for autonomous flights is available [on GitBook](ht ## Manual installation -Install ROS Kinetic according to the [documentation](http://wiki.ros.org/kinetic/Installation), then [create a Catkin workspace](http://wiki.ros.org/catkin/Tutorials/create_a_workspace). +Install ROS Melodic according to the [documentation](http://wiki.ros.org/melodic/Installation), then [create a Catkin workspace](http://wiki.ros.org/catkin/Tutorials/create_a_workspace). Clone this repo to directory `~/catkin_ws/src/clever`: diff --git a/builder/assets/melodic-rosdep-clever.yaml b/builder/assets/melodic-rosdep-clever.yaml new file mode 100644 index 00000000..d5f4bae4 --- /dev/null +++ b/builder/assets/melodic-rosdep-clever.yaml @@ -0,0 +1,708 @@ +catkin: + debian: + buster: ros-melodic-catkin +genmsg: + debian: + buster: ros-melodic-genmsg +gencpp: + debian: + buster: ros-melodic-gencpp +geneus: + debian: + buster: ros-melodic-geneus +genlisp: + debian: + buster: ros-melodic-genlisp +gennodejs: + debian: + buster: ros-melodic-gennodejs +genpy: + debian: + buster: ros-melodic-genpy +bond_core: + debian: + buster: ros-melodic-bond-core +cmake_modules: + debian: + buster: ros-melodic-cmake-modules +class_loader: + debian: + buster: ros-melodic-class-loader +common_msgs: + debian: + buster: ros-melodic-common-msgs +common_tutorials: + debian: + buster: ros-melodic-common-tutorials +cpp_common: + debian: + buster: ros-melodic-cpp-common +desktop: + debian: + buster: ros-melodic-desktop +diagnostics: + debian: + buster: ros-melodic-diagnostics +executive_smach: + debian: + buster: ros-melodic-executive-smach +geometry: + debian: + buster: ros-melodic-geometry +geometry_tutorials: + debian: + buster: ros-melodic-geometry-tutorials +gl_dependency: + debian: + buster: ros-melodic-gl-dependency +image_common: + debian: + buster: ros-melodic-image-common +image_pipeline: + debian: + buster: ros-melodic-image-pipeline +image_transport_plugins: + debian: + buster: ros-melodic-image-transport-plugins +laser_pipeline: + debian: + buster: ros-melodic-laser-pipeline +mavlink: + debian: + buster: ros-melodic-mavlink +media_export: + debian: + buster: ros-melodic-media-export +message_generation: + debian: + buster: ros-melodic-message-generation +message_runtime: + debian: + buster: ros-melodic-message-runtime +mk: + debian: + buster: ros-melodic-mk +nodelet_core: + debian: + buster: ros-melodic-nodelet-core +orocos_kdl: + debian: + buster: ros-melodic-orocos-kdl +perception: + debian: + buster: ros-melodic-perception +perception_pcl: + debian: + buster: ros-melodic-perception-pcl +python_orocos_kdl: + debian: + buster: ros-melodic-python-orocos-kdl +qt_dotgraph: + debian: + buster: ros-melodic-qt-dotgraph +qt_gui: + debian: + buster: ros-melodic-qt-gui +qt_gui_py_common: + debian: + buster: ros-melodic-qt-gui-py-common +qwt_dependency: + debian: + buster: ros-melodic-qwt-dependency +robot: + debian: + buster: ros-melodic-robot +ros: + debian: + buster: ros-melodic-ros +ros_base: + debian: + buster: ros-melodic-ros-base +ros_comm: + debian: + buster: ros-melodic-ros-comm +ros_core: + debian: + buster: ros-melodic-ros-core +ros_environment: + debian: + buster: ros-melodic-ros-environment +ros_tutorials: + debian: + buster: ros-melodic-ros-tutorials +rosapi: + debian: + buster: ros-melodic-rosapi +rosbag_migration_rule: + debian: + buster: ros-melodic-rosbag-migration-rule +rosbash: + debian: + buster: ros-melodic-rosbash +rosboost_cfg: + debian: + buster: ros-melodic-rosboost-cfg +rosbridge_server: + debian: + buster: ros-melodic-rosbridge-server +rosbridge_suite: + debian: + buster: ros-melodic-rosbridge-suite +rosbuild: + debian: + buster: ros-melodic-rosbuild +rosclean: + debian: + buster: ros-melodic-rosclean +roscpp_core: + debian: + buster: ros-melodic-roscpp-core +roscpp_traits: + debian: + buster: ros-melodic-roscpp-traits +roscreate: + debian: + buster: ros-melodic-roscreate +rosgraph: + debian: + buster: ros-melodic-rosgraph +roslang: + debian: + buster: ros-melodic-roslang +roslint: + debian: + buster: ros-melodic-roslint +roslisp: + debian: + buster: ros-melodic-roslisp +rosmake: + debian: + buster: ros-melodic-rosmake +rosmaster: + debian: + buster: ros-melodic-rosmaster +rospack: + debian: + buster: ros-melodic-rospack +roslib: + debian: + buster: ros-melodic-roslib +rosparam: + debian: + buster: ros-melodic-rosparam +rospy: + debian: + buster: ros-melodic-rospy +rosserial: + debian: + buster: ros-melodic-rosserial +rosserial_msgs: + debian: + buster: ros-melodic-rosserial-msgs +rosserial_python: + debian: + buster: ros-melodic-rosserial-python +rosservice: + debian: + buster: ros-melodic-rosservice +rostime: + debian: + buster: ros-melodic-rostime +roscpp_serialization: + debian: + buster: ros-melodic-roscpp-serialization +python_qt_binding: + debian: + buster: ros-melodic-python-qt-binding +roslaunch: + debian: + buster: ros-melodic-roslaunch +rosunit: + debian: + buster: ros-melodic-rosunit +angles: + debian: + buster: ros-melodic-angles +libmavconn: + debian: + buster: ros-melodic-libmavconn +rosconsole: + debian: + buster: ros-melodic-rosconsole +pluginlib: + debian: + buster: ros-melodic-pluginlib +qt_gui_cpp: + debian: + buster: ros-melodic-qt-gui-cpp +resource_retriever: + debian: + buster: ros-melodic-resource-retriever +rosconsole_bridge: + debian: + buster: ros-melodic-rosconsole-bridge +roslz4: + debian: + buster: ros-melodic-roslz4 +rosserial_client: + debian: + buster: ros-melodic-rosserial-client +rostest: + debian: + buster: ros-melodic-rostest +rqt_action: + debian: + buster: ros-melodic-rqt-action +rqt_bag: + debian: + buster: ros-melodic-rqt-bag +rqt_bag_plugins: + debian: + buster: ros-melodic-rqt-bag-plugins +rqt_common_plugins: + debian: + buster: ros-melodic-rqt-common-plugins +rqt_console: + debian: + buster: ros-melodic-rqt-console +rqt_dep: + debian: + buster: ros-melodic-rqt-dep +rqt_graph: + debian: + buster: ros-melodic-rqt-graph +rqt_gui: + debian: + buster: ros-melodic-rqt-gui +rqt_logger_level: + debian: + buster: ros-melodic-rqt-logger-level +rqt_moveit: + debian: + buster: ros-melodic-rqt-moveit +rqt_msg: + debian: + buster: ros-melodic-rqt-msg +rqt_nav_view: + debian: + buster: ros-melodic-rqt-nav-view +rqt_plot: + debian: + buster: ros-melodic-rqt-plot +rqt_pose_view: + debian: + buster: ros-melodic-rqt-pose-view +rqt_publisher: + debian: + buster: ros-melodic-rqt-publisher +rqt_py_console: + debian: + buster: ros-melodic-rqt-py-console +rqt_reconfigure: + debian: + buster: ros-melodic-rqt-reconfigure +rqt_robot_dashboard: + debian: + buster: ros-melodic-rqt-robot-dashboard +rqt_robot_monitor: + debian: + buster: ros-melodic-rqt-robot-monitor +rqt_robot_plugins: + debian: + buster: ros-melodic-rqt-robot-plugins +rqt_robot_steering: + debian: + buster: ros-melodic-rqt-robot-steering +rqt_runtime_monitor: + debian: + buster: ros-melodic-rqt-runtime-monitor +rqt_service_caller: + debian: + buster: ros-melodic-rqt-service-caller +rqt_shell: + debian: + buster: ros-melodic-rqt-shell +rqt_srv: + debian: + buster: ros-melodic-rqt-srv +rqt_tf_tree: + debian: + buster: ros-melodic-rqt-tf-tree +rqt_top: + debian: + buster: ros-melodic-rqt-top +rqt_topic: + debian: + buster: ros-melodic-rqt-topic +rqt_web: + debian: + buster: ros-melodic-rqt-web +smach: + debian: + buster: ros-melodic-smach +smclib: + debian: + buster: ros-melodic-smclib +std_msgs: + debian: + buster: ros-melodic-std-msgs +actionlib_msgs: + debian: + buster: ros-melodic-actionlib-msgs +bond: + debian: + buster: ros-melodic-bond +diagnostic_msgs: + debian: + buster: ros-melodic-diagnostic-msgs +geometry_msgs: + debian: + buster: ros-melodic-geometry-msgs +eigen_conversions: + debian: + buster: ros-melodic-eigen-conversions +kdl_conversions: + debian: + buster: ros-melodic-kdl-conversions +nav_msgs: + debian: + buster: ros-melodic-nav-msgs +rosbridge_msgs: + debian: + buster: ros-melodic-rosbridge-msgs +rosgraph_msgs: + debian: + buster: ros-melodic-rosgraph-msgs +rosmsg: + debian: + buster: ros-melodic-rosmsg +rqt_py_common: + debian: + buster: ros-melodic-rqt-py-common +shape_msgs: + debian: + buster: ros-melodic-shape-msgs +smach_msgs: + debian: + buster: ros-melodic-smach-msgs +std_srvs: + debian: + buster: ros-melodic-std-srvs +tf2_msgs: + debian: + buster: ros-melodic-tf2-msgs +tf2: + debian: + buster: ros-melodic-tf2 +tf2_eigen: + debian: + buster: ros-melodic-tf2-eigen +trajectory_msgs: + debian: + buster: ros-melodic-trajectory-msgs +control_msgs: + debian: + buster: ros-melodic-control-msgs +urdf_parser_plugin: + debian: + buster: ros-melodic-urdf-parser-plugin +urdfdom_py: + debian: + buster: ros-melodic-urdfdom-py +uuid_msgs: + debian: + buster: ros-melodic-uuid-msgs +geographic_msgs: + debian: + buster: ros-melodic-geographic-msgs +vision_opencv: + debian: + buster: ros-melodic-vision-opencv +visualization_msgs: + debian: + buster: ros-melodic-visualization-msgs +visualization_tutorials: + debian: + buster: ros-melodic-visualization-tutorials +viz: + debian: + buster: ros-melodic-viz +webkit_dependency: + debian: + buster: ros-melodic-webkit-dependency +xmlrpcpp: + debian: + buster: ros-melodic-xmlrpcpp +roscpp: + debian: + buster: ros-melodic-roscpp +bondcpp: + debian: + buster: ros-melodic-bondcpp +bondpy: + debian: + buster: ros-melodic-bondpy +nodelet: + debian: + buster: ros-melodic-nodelet +nodelet_tutorial_math: + debian: + buster: ros-melodic-nodelet-tutorial-math +pluginlib_tutorials: + debian: + buster: ros-melodic-pluginlib-tutorials +roscpp_tutorials: + debian: + buster: ros-melodic-roscpp-tutorials +rosout: + debian: + buster: ros-melodic-rosout +async_web_server_cpp: + debian: + buster: ros-melodic-async-web-server-cpp +camera_calibration: + debian: + buster: ros-melodic-camera-calibration +diagnostic_aggregator: + debian: + buster: ros-melodic-diagnostic-aggregator +diagnostic_updater: + debian: + buster: ros-melodic-diagnostic-updater +diagnostic_common_diagnostics: + debian: + buster: ros-melodic-diagnostic-common-diagnostics +dynamic_reconfigure: + debian: + buster: ros-melodic-dynamic-reconfigure +filters: + debian: + buster: ros-melodic-filters +joint_state_publisher: + debian: + buster: ros-melodic-joint-state-publisher +message_filters: + debian: + buster: ros-melodic-message-filters +rosauth: + debian: + buster: ros-melodic-rosauth +rosbag_storage: + debian: + buster: ros-melodic-rosbag-storage +rosnode: + debian: + buster: ros-melodic-rosnode +rospy_tutorials: + debian: + buster: ros-melodic-rospy-tutorials +rosshow: + debian: + buster: ros-melodic-rosshow +rostopic: + debian: + buster: ros-melodic-rostopic +rqt_gui_cpp: + debian: + buster: ros-melodic-rqt-gui-cpp +rqt_gui_py: + debian: + buster: ros-melodic-rqt-gui-py +self_test: + debian: + buster: ros-melodic-self-test +smach_ros: + debian: + buster: ros-melodic-smach-ros +tf2_py: + debian: + buster: ros-melodic-tf2-py +topic_tools: + debian: + buster: ros-melodic-topic-tools +rosbag: + debian: + buster: ros-melodic-rosbag +actionlib: + debian: + buster: ros-melodic-actionlib +actionlib_tutorials: + debian: + buster: ros-melodic-actionlib-tutorials +diagnostic_analysis: + debian: + buster: ros-melodic-diagnostic-analysis +nodelet_topic_tools: + debian: + buster: ros-melodic-nodelet-topic-tools +roswtf: + debian: + buster: ros-melodic-roswtf +rqt_launch: + debian: + buster: ros-melodic-rqt-launch +sensor_msgs: + debian: + buster: ros-melodic-sensor-msgs +camera_calibration_parsers: + debian: + buster: ros-melodic-camera-calibration-parsers +cv_bridge: + debian: + buster: ros-melodic-cv-bridge +image_geometry: + debian: + buster: ros-melodic-image-geometry +image_transport: + debian: + buster: ros-melodic-image-transport +camera_info_manager: + debian: + buster: ros-melodic-camera-info-manager +compressed_depth_image_transport: + debian: + buster: ros-melodic-compressed-depth-image-transport +compressed_image_transport: + debian: + buster: ros-melodic-compressed-image-transport +image_proc: + debian: + buster: ros-melodic-image-proc +image_publisher: + debian: + buster: ros-melodic-image-publisher +map_msgs: + debian: + buster: ros-melodic-map-msgs +mavros_msgs: + debian: + buster: ros-melodic-mavros-msgs +pcl_msgs: + debian: + buster: ros-melodic-pcl-msgs +pcl_conversions: + debian: + buster: ros-melodic-pcl-conversions +polled_camera: + debian: + buster: ros-melodic-polled-camera +rqt_image_view: + debian: + buster: ros-melodic-rqt-image-view +stereo_msgs: + debian: + buster: ros-melodic-stereo-msgs +image_view: + debian: + buster: ros-melodic-image-view +rosbridge_library: + debian: + buster: ros-melodic-rosbridge-library +stereo_image_proc: + debian: + buster: ros-melodic-stereo-image-proc +tf2_ros: + debian: + buster: ros-melodic-tf2-ros +depth_image_proc: + debian: + buster: ros-melodic-depth-image-proc +mavros: + debian: + buster: ros-melodic-mavros +tf: + debian: + buster: ros-melodic-tf +interactive_markers: + debian: + buster: ros-melodic-interactive-markers +interactive_marker_tutorials: + debian: + buster: ros-melodic-interactive-marker-tutorials +laser_geometry: + debian: + buster: ros-melodic-laser-geometry +laser_assembler: + debian: + buster: ros-melodic-laser-assembler +laser_filters: + debian: + buster: ros-melodic-laser-filters +pcl_ros: + debian: + buster: ros-melodic-pcl-ros +tf2_geometry_msgs: + debian: + buster: ros-melodic-tf2-geometry-msgs +image_rotate: + debian: + buster: ros-melodic-image-rotate +tf2_kdl: + debian: + buster: ros-melodic-tf2-kdl +tf2_web_republisher: + debian: + buster: ros-melodic-tf2-web-republisher +tf_conversions: + debian: + buster: ros-melodic-tf-conversions +theora_image_transport: + debian: + buster: ros-melodic-theora-image-transport +turtlesim: + debian: + buster: ros-melodic-turtlesim +turtle_actionlib: + debian: + buster: ros-melodic-turtle-actionlib +turtle_tf: + debian: + buster: ros-melodic-turtle-tf +turtle_tf2: + debian: + buster: ros-melodic-turtle-tf2 +urdf: + debian: + buster: ros-melodic-urdf +kdl_parser: + debian: + buster: ros-melodic-kdl-parser +kdl_parser_py: + debian: + buster: ros-melodic-kdl-parser-py +robot_state_publisher: + debian: + buster: ros-melodic-robot-state-publisher +rviz: + debian: + buster: ros-melodic-rviz +librviz_tutorial: + debian: + buster: ros-melodic-librviz-tutorial +rqt_rviz: + debian: + buster: ros-melodic-rqt-rviz +rviz_plugin_tutorials: + debian: + buster: ros-melodic-rviz-plugin-tutorials +rviz_python_tutorial: + debian: + buster: ros-melodic-rviz-python-tutorial +urdf_tutorial: + debian: + buster: ros-melodic-urdf-tutorial +usb_cam: + debian: + buster: ros-melodic-usb-cam +visualization_marker_tutorials: + debian: + buster: ros-melodic-visualization-marker-tutorials +vl53l1x: + debian: + buster: ros-melodic-vl53l1x +web_video_server: + debian: + buster: ros-melodic-web-video-server +xacro: + debian: + buster: ros-melodic-xacro diff --git a/builder/image-build.sh b/builder/image-build.sh index 454a9093..6342f632 100755 --- a/builder/image-build.sh +++ b/builder/image-build.sh @@ -110,7 +110,7 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-network. # Clever ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/clever.service' '/lib/systemd/system/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/roscore.service' '/lib/systemd/system/' -${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/kinetic-rosdep-clever.yaml' '/etc/ros/rosdep/' +${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/melodic-rosdep-clever.yaml' '/etc/ros/rosdep/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/ros_python_paths' '/etc/sudoers.d/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/pigpiod.service' '/lib/systemd/system/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/launch.nanorc' '/usr/share/nano/' diff --git a/builder/image-ros.sh b/builder/image-ros.sh index e7e38ba8..f396066f 100755 --- a/builder/image-ros.sh +++ b/builder/image-ros.sh @@ -68,7 +68,7 @@ my_travis_retry() { # TODO: 'kinetic-rosdep-clever.yaml' should add only if we use our repo? echo_stamp "Init rosdep" my_travis_retry rosdep init -echo "yaml file:///etc/ros/rosdep/kinetic-rosdep-clever.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list +echo "yaml file:///etc/ros/rosdep/melodic-rosdep-clever.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list my_travis_retry rosdep update echo_stamp "Populate rosdep for ROS user" @@ -77,7 +77,7 @@ my_travis_retry sudo -u pi rosdep update resolve_rosdep() { # TEMPLATE: resolve_rosdep CATKIN_PATH=$1 - ROS_DISTRO='kinetic' + ROS_DISTRO='melodic' OS_DISTRO='debian' OS_VERSION='buster' @@ -153,7 +153,7 @@ echo_stamp "Installing CLEVER" \ && resolve_rosdep $(pwd) \ && my_travis_retry pip install wheel \ && my_travis_retry pip install -r /home/pi/catkin_ws/src/clever/clever/requirements.txt \ -&& source /opt/ros/kinetic/setup.bash \ +&& source /opt/ros/melodic/setup.bash \ && catkin_make -j2 -DCMAKE_BUILD_TYPE=Release \ && systemctl enable roscore \ && systemctl enable clever \ @@ -168,14 +168,14 @@ gitbook build echo_stamp "Installing additional ROS packages" apt-get install -y --no-install-recommends \ - ros-kinetic-dynamic-reconfigure \ - ros-kinetic-compressed-image-transport \ - ros-kinetic-rosbridge-suite \ - ros-kinetic-rosserial \ - ros-kinetic-usb-cam \ - ros-kinetic-vl53l1x \ - ros-kinetic-ws281x \ - ros-kinetic-rosshow + ros-melodic-dynamic-reconfigure \ + ros-melodic-compressed-image-transport \ + ros-melodic-rosbridge-suite \ + ros-melodic-rosserial \ + ros-melodic-usb-cam \ + ros-melodic-vl53l1x \ + ros-melodic-ws281x \ + ros-melodic-rosshow # TODO move GeographicLib datasets to Mavros debian package echo_stamp "Install GeographicLib datasets (needed for mavros)" \ @@ -191,9 +191,9 @@ echo_stamp "Setup ROS environment" cat << EOF >> /home/pi/.bashrc LANG='C.UTF-8' LC_ALL='C.UTF-8' -ROS_DISTRO='kinetic' +ROS_DISTRO='melodic' export ROS_HOSTNAME=\`hostname\`.local -source /opt/ros/kinetic/setup.bash +source /opt/ros/melodic/setup.bash source /home/pi/catkin_ws/devel/setup.bash EOF diff --git a/builder/image-software.sh b/builder/image-software.sh index 2738f951..b6668316 100755 --- a/builder/image-software.sh +++ b/builder/image-software.sh @@ -66,7 +66,7 @@ apt-get update \ && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 echo "deb http://packages.ros.org/ros/ubuntu buster main" > /etc/apt/sources.list.d/ros-latest.list -echo "deb http://repo.coex.space/rpi-ros-kinetic-buster buster main" > /etc/apt/sources.list.d/rpi-ros-kinetic.list +echo "deb http://repo.coex.space/rpi-ros-melodic buster main" > /etc/apt/sources.list.d/rpi-ros-melodic.list # FIXME: We still don't have these packages built for Buster # FIXME: Check these packages after their installation echo "deb http://repo.coex.space/clever stretch main" > /etc/apt/sources.list.d/clever.list diff --git a/builder/image-validate.sh b/builder/image-validate.sh index a8a48b8f..7466fa9d 100755 --- a/builder/image-validate.sh +++ b/builder/image-validate.sh @@ -16,9 +16,9 @@ set -ex echo "Run image tests" -export ROS_DISTRO='kinetic' +export ROS_DISTRO='melodic' export ROS_IP='127.0.0.1' -source /opt/ros/kinetic/setup.bash +source /opt/ros/melodic/setup.bash source /home/pi/catkin_ws/devel/setup.bash cd /home/pi/catkin_ws/src/clever/builder/test/