mirror of
https://github.com/CopterExpress/clover.git
synced 2026-06-01 07:29:32 +00:00
Compare commits
36 Commits
v0.19-alph
...
v0.19-rc.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8a8e7339d | ||
|
|
e1ab0e63b5 | ||
|
|
4a23a9274a | ||
|
|
5bc7443a7b | ||
|
|
5fe18152f0 | ||
|
|
b8d4a7fdcc | ||
|
|
c3a4f674ec | ||
|
|
591d57e2b2 | ||
|
|
4a67783706 | ||
|
|
7dc82e8154 | ||
|
|
4feac879eb | ||
|
|
6c883cab67 | ||
|
|
00048d4dfe | ||
|
|
a635b9d21d | ||
|
|
de693e3e58 | ||
|
|
9e2707ad6b | ||
|
|
a7e04fe22a | ||
|
|
3647337455 | ||
|
|
b771fbb398 | ||
|
|
7ed2dd398c | ||
|
|
45e6f396d0 | ||
|
|
0574f4cc46 | ||
|
|
f574637a3f | ||
|
|
6ede041c8a | ||
|
|
0fda24c63c | ||
|
|
a01c2b8d6c | ||
|
|
5ce348d14c | ||
|
|
5736c7acfb | ||
|
|
c6b3e837e3 | ||
|
|
78e42df0f2 | ||
|
|
a8824a696d | ||
|
|
7a216ede07 | ||
|
|
b68e42bfcc | ||
|
|
fdeab48bf5 | ||
|
|
5c1b19d9c9 | ||
|
|
7d25898694 |
@@ -20,6 +20,7 @@
|
||||
"MAVLink",
|
||||
"ROS",
|
||||
"ROS Kinetic",
|
||||
"ROS Melodic",
|
||||
"OpenCV",
|
||||
"Gazebo",
|
||||
"GitHub",
|
||||
|
||||
@@ -109,7 +109,7 @@ jobs:
|
||||
- wget https://github.com/okalachev/editorconfig-checker/releases/download/1.2.1-disable-spaces-amount/ec-linux-amd64
|
||||
- chmod +x ec-linux-amd64
|
||||
script:
|
||||
- ./ec-linux-amd64 -spaces-after-tabs -e "roslib.js|ros3d.js|eventemitter2.js|draw.cpp|BinUtils.swift|\.idea|apps/android/app|Assets.xcassets|test_parser_pass.txt|test_node_failure.txt|aruco_pose/vendor|\.stl"
|
||||
- ./ec-linux-amd64 -spaces-after-tabs -e "roslib.js|ros3d.js|eventemitter2.js|draw.cpp|BinUtils.swift|\.idea|apps/android/app|Assets.xcassets|test_parser_pass.txt|test_node_failure.txt|aruco_pose/vendor|\.stl|\.dxf"
|
||||
stages:
|
||||
- Build
|
||||
- Annotate
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
[Unit]
|
||||
Description=Clever ROS package
|
||||
Requires=roscore.service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=pi
|
||||
|
||||
@@ -1,723 +1,735 @@
|
||||
catkin:
|
||||
debian:
|
||||
buster: ros-melodic-catkin
|
||||
buster: [ros-melodic-catkin]
|
||||
genmsg:
|
||||
debian:
|
||||
buster: ros-melodic-genmsg
|
||||
buster: [ros-melodic-genmsg]
|
||||
gencpp:
|
||||
debian:
|
||||
buster: ros-melodic-gencpp
|
||||
buster: [ros-melodic-gencpp]
|
||||
geneus:
|
||||
debian:
|
||||
buster: ros-melodic-geneus
|
||||
buster: [ros-melodic-geneus]
|
||||
genlisp:
|
||||
debian:
|
||||
buster: ros-melodic-genlisp
|
||||
buster: [ros-melodic-genlisp]
|
||||
gennodejs:
|
||||
debian:
|
||||
buster: ros-melodic-gennodejs
|
||||
buster: [ros-melodic-gennodejs]
|
||||
genpy:
|
||||
debian:
|
||||
buster: ros-melodic-genpy
|
||||
buster: [ros-melodic-genpy]
|
||||
bond_core:
|
||||
debian:
|
||||
buster: ros-melodic-bond-core
|
||||
buster: [ros-melodic-bond-core]
|
||||
cmake_modules:
|
||||
debian:
|
||||
buster: ros-melodic-cmake-modules
|
||||
buster: [ros-melodic-cmake-modules]
|
||||
class_loader:
|
||||
debian:
|
||||
buster: ros-melodic-class-loader
|
||||
buster: [ros-melodic-class-loader]
|
||||
common_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-common-msgs
|
||||
buster: [ros-melodic-common-msgs]
|
||||
common_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-common-tutorials
|
||||
buster: [ros-melodic-common-tutorials]
|
||||
cpp_common:
|
||||
debian:
|
||||
buster: ros-melodic-cpp-common
|
||||
buster: [ros-melodic-cpp-common]
|
||||
desktop:
|
||||
debian:
|
||||
buster: ros-melodic-desktop
|
||||
buster: [ros-melodic-desktop]
|
||||
diagnostics:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostics
|
||||
buster: [ros-melodic-diagnostics]
|
||||
executive_smach:
|
||||
debian:
|
||||
buster: ros-melodic-executive-smach
|
||||
buster: [ros-melodic-executive-smach]
|
||||
geometry:
|
||||
debian:
|
||||
buster: ros-melodic-geometry
|
||||
buster: [ros-melodic-geometry]
|
||||
geometry_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-geometry-tutorials
|
||||
buster: [ros-melodic-geometry-tutorials]
|
||||
gl_dependency:
|
||||
debian:
|
||||
buster: ros-melodic-gl-dependency
|
||||
buster: [ros-melodic-gl-dependency]
|
||||
image_common:
|
||||
debian:
|
||||
buster: ros-melodic-image-common
|
||||
buster: [ros-melodic-image-common]
|
||||
image_pipeline:
|
||||
debian:
|
||||
buster: ros-melodic-image-pipeline
|
||||
buster: [ros-melodic-image-pipeline]
|
||||
image_transport_plugins:
|
||||
debian:
|
||||
buster: ros-melodic-image-transport-plugins
|
||||
buster: [ros-melodic-image-transport-plugins]
|
||||
laser_pipeline:
|
||||
debian:
|
||||
buster: ros-melodic-laser-pipeline
|
||||
buster: [ros-melodic-laser-pipeline]
|
||||
mavlink:
|
||||
debian:
|
||||
buster: ros-melodic-mavlink
|
||||
buster: [ros-melodic-mavlink]
|
||||
media_export:
|
||||
debian:
|
||||
buster: ros-melodic-media-export
|
||||
buster: [ros-melodic-media-export]
|
||||
message_generation:
|
||||
debian:
|
||||
buster: ros-melodic-message-generation
|
||||
buster: [ros-melodic-message-generation]
|
||||
message_runtime:
|
||||
debian:
|
||||
buster: ros-melodic-message-runtime
|
||||
buster: [ros-melodic-message-runtime]
|
||||
mk:
|
||||
debian:
|
||||
buster: ros-melodic-mk
|
||||
buster: [ros-melodic-mk]
|
||||
nodelet_core:
|
||||
debian:
|
||||
buster: ros-melodic-nodelet-core
|
||||
buster: [ros-melodic-nodelet-core]
|
||||
orocos_kdl:
|
||||
debian:
|
||||
buster: ros-melodic-orocos-kdl
|
||||
buster: [ros-melodic-orocos-kdl]
|
||||
perception:
|
||||
debian:
|
||||
buster: ros-melodic-perception
|
||||
buster: [ros-melodic-perception]
|
||||
perception_pcl:
|
||||
debian:
|
||||
buster: ros-melodic-perception-pcl
|
||||
buster: [ros-melodic-perception-pcl]
|
||||
python_orocos_kdl:
|
||||
debian:
|
||||
buster: ros-melodic-python-orocos-kdl
|
||||
buster: [ros-melodic-python-orocos-kdl]
|
||||
qt_dotgraph:
|
||||
debian:
|
||||
buster: ros-melodic-qt-dotgraph
|
||||
buster: [ros-melodic-qt-dotgraph]
|
||||
qt_gui:
|
||||
debian:
|
||||
buster: ros-melodic-qt-gui
|
||||
buster: [ros-melodic-qt-gui]
|
||||
qt_gui_py_common:
|
||||
debian:
|
||||
buster: ros-melodic-qt-gui-py-common
|
||||
buster: [ros-melodic-qt-gui-py-common]
|
||||
qwt_dependency:
|
||||
debian:
|
||||
buster: ros-melodic-qwt-dependency
|
||||
buster: [ros-melodic-qwt-dependency]
|
||||
robot:
|
||||
debian:
|
||||
buster: ros-melodic-robot
|
||||
buster: [ros-melodic-robot]
|
||||
ros:
|
||||
debian:
|
||||
buster: ros-melodic-ros
|
||||
buster: [ros-melodic-ros]
|
||||
ros_base:
|
||||
debian:
|
||||
buster: ros-melodic-ros-base
|
||||
buster: [ros-melodic-ros-base]
|
||||
ros_comm:
|
||||
debian:
|
||||
buster: ros-melodic-ros-comm
|
||||
buster: [ros-melodic-ros-comm]
|
||||
ros_core:
|
||||
debian:
|
||||
buster: ros-melodic-ros-core
|
||||
buster: [ros-melodic-ros-core]
|
||||
ros_environment:
|
||||
debian:
|
||||
buster: ros-melodic-ros-environment
|
||||
buster: [ros-melodic-ros-environment]
|
||||
ros_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-ros-tutorials
|
||||
buster: [ros-melodic-ros-tutorials]
|
||||
rosapi:
|
||||
debian:
|
||||
buster: ros-melodic-rosapi
|
||||
buster: [ros-melodic-rosapi]
|
||||
rosbag_migration_rule:
|
||||
debian:
|
||||
buster: ros-melodic-rosbag-migration-rule
|
||||
buster: [ros-melodic-rosbag-migration-rule]
|
||||
rosbash:
|
||||
debian:
|
||||
buster: ros-melodic-rosbash
|
||||
buster: [ros-melodic-rosbash]
|
||||
rosboost_cfg:
|
||||
debian:
|
||||
buster: ros-melodic-rosboost-cfg
|
||||
buster: [ros-melodic-rosboost-cfg]
|
||||
rosbridge_server:
|
||||
debian:
|
||||
buster: ros-melodic-rosbridge-server
|
||||
buster: [ros-melodic-rosbridge-server]
|
||||
rosbridge_suite:
|
||||
debian:
|
||||
buster: ros-melodic-rosbridge-suite
|
||||
buster: [ros-melodic-rosbridge-suite]
|
||||
rosbuild:
|
||||
debian:
|
||||
buster: ros-melodic-rosbuild
|
||||
buster: [ros-melodic-rosbuild]
|
||||
rosclean:
|
||||
debian:
|
||||
buster: ros-melodic-rosclean
|
||||
buster: [ros-melodic-rosclean]
|
||||
roscpp_core:
|
||||
debian:
|
||||
buster: ros-melodic-roscpp-core
|
||||
buster: [ros-melodic-roscpp-core]
|
||||
roscpp_traits:
|
||||
debian:
|
||||
buster: ros-melodic-roscpp-traits
|
||||
buster: [ros-melodic-roscpp-traits]
|
||||
roscreate:
|
||||
debian:
|
||||
buster: ros-melodic-roscreate
|
||||
buster: [ros-melodic-roscreate]
|
||||
rosgraph:
|
||||
debian:
|
||||
buster: ros-melodic-rosgraph
|
||||
buster: [ros-melodic-rosgraph]
|
||||
roslang:
|
||||
debian:
|
||||
buster: ros-melodic-roslang
|
||||
buster: [ros-melodic-roslang]
|
||||
roslint:
|
||||
debian:
|
||||
buster: ros-melodic-roslint
|
||||
buster: [ros-melodic-roslint]
|
||||
roslisp:
|
||||
debian:
|
||||
buster: ros-melodic-roslisp
|
||||
buster: [ros-melodic-roslisp]
|
||||
rosmake:
|
||||
debian:
|
||||
buster: ros-melodic-rosmake
|
||||
buster: [ros-melodic-rosmake]
|
||||
rosmaster:
|
||||
debian:
|
||||
buster: ros-melodic-rosmaster
|
||||
buster: [ros-melodic-rosmaster]
|
||||
rospack:
|
||||
debian:
|
||||
buster: ros-melodic-rospack
|
||||
buster: [ros-melodic-rospack]
|
||||
roslib:
|
||||
debian:
|
||||
buster: ros-melodic-roslib
|
||||
buster: [ros-melodic-roslib]
|
||||
rosparam:
|
||||
debian:
|
||||
buster: ros-melodic-rosparam
|
||||
buster: [ros-melodic-rosparam]
|
||||
rospy:
|
||||
debian:
|
||||
buster: ros-melodic-rospy
|
||||
buster: [ros-melodic-rospy]
|
||||
rosserial:
|
||||
debian:
|
||||
buster: ros-melodic-rosserial
|
||||
buster: [ros-melodic-rosserial]
|
||||
rosserial_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-rosserial-msgs
|
||||
buster: [ros-melodic-rosserial-msgs]
|
||||
rosserial_python:
|
||||
debian:
|
||||
buster: ros-melodic-rosserial-python
|
||||
buster: [ros-melodic-rosserial-python]
|
||||
rosservice:
|
||||
debian:
|
||||
buster: ros-melodic-rosservice
|
||||
buster: [ros-melodic-rosservice]
|
||||
rostime:
|
||||
debian:
|
||||
buster: ros-melodic-rostime
|
||||
buster: [ros-melodic-rostime]
|
||||
roscpp_serialization:
|
||||
debian:
|
||||
buster: ros-melodic-roscpp-serialization
|
||||
buster: [ros-melodic-roscpp-serialization]
|
||||
python_qt_binding:
|
||||
debian:
|
||||
buster: ros-melodic-python-qt-binding
|
||||
buster: [ros-melodic-python-qt-binding]
|
||||
roslaunch:
|
||||
debian:
|
||||
buster: ros-melodic-roslaunch
|
||||
buster: [ros-melodic-roslaunch]
|
||||
rosunit:
|
||||
debian:
|
||||
buster: ros-melodic-rosunit
|
||||
buster: [ros-melodic-rosunit]
|
||||
angles:
|
||||
debian:
|
||||
buster: ros-melodic-angles
|
||||
buster: [ros-melodic-angles]
|
||||
libmavconn:
|
||||
debian:
|
||||
buster: ros-melodic-libmavconn
|
||||
buster: [ros-melodic-libmavconn]
|
||||
rosconsole:
|
||||
debian:
|
||||
buster: ros-melodic-rosconsole
|
||||
buster: [ros-melodic-rosconsole]
|
||||
pluginlib:
|
||||
debian:
|
||||
buster: ros-melodic-pluginlib
|
||||
buster: [ros-melodic-pluginlib]
|
||||
qt_gui_cpp:
|
||||
debian:
|
||||
buster: ros-melodic-qt-gui-cpp
|
||||
buster: [ros-melodic-qt-gui-cpp]
|
||||
resource_retriever:
|
||||
debian:
|
||||
buster: ros-melodic-resource-retriever
|
||||
buster: [ros-melodic-resource-retriever]
|
||||
rosconsole_bridge:
|
||||
debian:
|
||||
buster: ros-melodic-rosconsole-bridge
|
||||
buster: [ros-melodic-rosconsole-bridge]
|
||||
roslz4:
|
||||
debian:
|
||||
buster: ros-melodic-roslz4
|
||||
buster: [ros-melodic-roslz4]
|
||||
rosserial_client:
|
||||
debian:
|
||||
buster: ros-melodic-rosserial-client
|
||||
buster: [ros-melodic-rosserial-client]
|
||||
rostest:
|
||||
debian:
|
||||
buster: ros-melodic-rostest
|
||||
buster: [ros-melodic-rostest]
|
||||
rqt_action:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-action
|
||||
buster: [ros-melodic-rqt-action]
|
||||
rqt_bag:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-bag
|
||||
buster: [ros-melodic-rqt-bag]
|
||||
rqt_bag_plugins:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-bag-plugins
|
||||
buster: [ros-melodic-rqt-bag-plugins]
|
||||
rqt_common_plugins:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-common-plugins
|
||||
buster: [ros-melodic-rqt-common-plugins]
|
||||
rqt_console:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-console
|
||||
buster: [ros-melodic-rqt-console]
|
||||
rqt_dep:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-dep
|
||||
buster: [ros-melodic-rqt-dep]
|
||||
rqt_graph:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-graph
|
||||
buster: [ros-melodic-rqt-graph]
|
||||
rqt_gui:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-gui
|
||||
buster: [ros-melodic-rqt-gui]
|
||||
rqt_logger_level:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-logger-level
|
||||
buster: [ros-melodic-rqt-logger-level]
|
||||
rqt_moveit:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-moveit
|
||||
buster: [ros-melodic-rqt-moveit]
|
||||
rqt_msg:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-msg
|
||||
buster: [ros-melodic-rqt-msg]
|
||||
rqt_nav_view:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-nav-view
|
||||
buster: [ros-melodic-rqt-nav-view]
|
||||
rqt_plot:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-plot
|
||||
buster: [ros-melodic-rqt-plot]
|
||||
rqt_pose_view:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-pose-view
|
||||
buster: [ros-melodic-rqt-pose-view]
|
||||
rqt_publisher:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-publisher
|
||||
buster: [ros-melodic-rqt-publisher]
|
||||
rqt_py_console:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-py-console
|
||||
buster: [ros-melodic-rqt-py-console]
|
||||
rqt_reconfigure:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-reconfigure
|
||||
buster: [ros-melodic-rqt-reconfigure]
|
||||
rqt_robot_dashboard:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-robot-dashboard
|
||||
buster: [ros-melodic-rqt-robot-dashboard]
|
||||
rqt_robot_monitor:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-robot-monitor
|
||||
buster: [ros-melodic-rqt-robot-monitor]
|
||||
rqt_robot_plugins:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-robot-plugins
|
||||
buster: [ros-melodic-rqt-robot-plugins]
|
||||
rqt_robot_steering:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-robot-steering
|
||||
buster: [ros-melodic-rqt-robot-steering]
|
||||
rqt_runtime_monitor:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-runtime-monitor
|
||||
buster: [ros-melodic-rqt-runtime-monitor]
|
||||
rqt_service_caller:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-service-caller
|
||||
buster: [ros-melodic-rqt-service-caller]
|
||||
rqt_shell:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-shell
|
||||
buster: [ros-melodic-rqt-shell]
|
||||
rqt_srv:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-srv
|
||||
buster: [ros-melodic-rqt-srv]
|
||||
rqt_tf_tree:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-tf-tree
|
||||
buster: [ros-melodic-rqt-tf-tree]
|
||||
rqt_top:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-top
|
||||
buster: [ros-melodic-rqt-top]
|
||||
rqt_topic:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-topic
|
||||
buster: [ros-melodic-rqt-topic]
|
||||
rqt_web:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-web
|
||||
buster: [ros-melodic-rqt-web]
|
||||
smach:
|
||||
debian:
|
||||
buster: ros-melodic-smach
|
||||
buster: [ros-melodic-smach]
|
||||
smclib:
|
||||
debian:
|
||||
buster: ros-melodic-smclib
|
||||
buster: [ros-melodic-smclib]
|
||||
std_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-std-msgs
|
||||
buster: [ros-melodic-std-msgs]
|
||||
actionlib_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-actionlib-msgs
|
||||
buster: [ros-melodic-actionlib-msgs]
|
||||
bond:
|
||||
debian:
|
||||
buster: ros-melodic-bond
|
||||
buster: [ros-melodic-bond]
|
||||
diagnostic_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostic-msgs
|
||||
buster: [ros-melodic-diagnostic-msgs]
|
||||
geometry_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-geometry-msgs
|
||||
buster: [ros-melodic-geometry-msgs]
|
||||
eigen_conversions:
|
||||
debian:
|
||||
buster: ros-melodic-eigen-conversions
|
||||
buster: [ros-melodic-eigen-conversions]
|
||||
kdl_conversions:
|
||||
debian:
|
||||
buster: ros-melodic-kdl-conversions
|
||||
buster: [ros-melodic-kdl-conversions]
|
||||
nav_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-nav-msgs
|
||||
buster: [ros-melodic-nav-msgs]
|
||||
rosbridge_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-rosbridge-msgs
|
||||
buster: [ros-melodic-rosbridge-msgs]
|
||||
rosgraph_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-rosgraph-msgs
|
||||
buster: [ros-melodic-rosgraph-msgs]
|
||||
rosmsg:
|
||||
debian:
|
||||
buster: ros-melodic-rosmsg
|
||||
buster: [ros-melodic-rosmsg]
|
||||
rqt_py_common:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-py-common
|
||||
buster: [ros-melodic-rqt-py-common]
|
||||
shape_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-shape-msgs
|
||||
buster: [ros-melodic-shape-msgs]
|
||||
smach_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-smach-msgs
|
||||
buster: [ros-melodic-smach-msgs]
|
||||
std_srvs:
|
||||
debian:
|
||||
buster: ros-melodic-std-srvs
|
||||
buster: [ros-melodic-std-srvs]
|
||||
tf2_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-msgs
|
||||
buster: [ros-melodic-tf2-msgs]
|
||||
tf2:
|
||||
debian:
|
||||
buster: ros-melodic-tf2
|
||||
buster: [ros-melodic-tf2]
|
||||
tf2_eigen:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-eigen
|
||||
buster: [ros-melodic-tf2-eigen]
|
||||
trajectory_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-trajectory-msgs
|
||||
buster: [ros-melodic-trajectory-msgs]
|
||||
control_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-control-msgs
|
||||
buster: [ros-melodic-control-msgs]
|
||||
urdf_parser_plugin:
|
||||
debian:
|
||||
buster: ros-melodic-urdf-parser-plugin
|
||||
buster: [ros-melodic-urdf-parser-plugin]
|
||||
urdfdom_py:
|
||||
debian:
|
||||
buster: ros-melodic-urdfdom-py
|
||||
buster: [ros-melodic-urdfdom-py]
|
||||
uuid_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-uuid-msgs
|
||||
buster: [ros-melodic-uuid-msgs]
|
||||
geographic_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-geographic-msgs
|
||||
buster: [ros-melodic-geographic-msgs]
|
||||
vision_opencv:
|
||||
debian:
|
||||
buster: ros-melodic-vision-opencv
|
||||
buster: [ros-melodic-vision-opencv]
|
||||
visualization_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-visualization-msgs
|
||||
buster: [ros-melodic-visualization-msgs]
|
||||
visualization_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-visualization-tutorials
|
||||
buster: [ros-melodic-visualization-tutorials]
|
||||
viz:
|
||||
debian:
|
||||
buster: ros-melodic-viz
|
||||
buster: [ros-melodic-viz]
|
||||
webkit_dependency:
|
||||
debian:
|
||||
buster: ros-melodic-webkit-dependency
|
||||
buster: [ros-melodic-webkit-dependency]
|
||||
xmlrpcpp:
|
||||
debian:
|
||||
buster: ros-melodic-xmlrpcpp
|
||||
buster: [ros-melodic-xmlrpcpp]
|
||||
roscpp:
|
||||
debian:
|
||||
buster: ros-melodic-roscpp
|
||||
buster: [ros-melodic-roscpp]
|
||||
bondcpp:
|
||||
debian:
|
||||
buster: ros-melodic-bondcpp
|
||||
buster: [ros-melodic-bondcpp]
|
||||
bondpy:
|
||||
debian:
|
||||
buster: ros-melodic-bondpy
|
||||
buster: [ros-melodic-bondpy]
|
||||
nodelet:
|
||||
debian:
|
||||
buster: ros-melodic-nodelet
|
||||
buster: [ros-melodic-nodelet]
|
||||
nodelet_tutorial_math:
|
||||
debian:
|
||||
buster: ros-melodic-nodelet-tutorial-math
|
||||
buster: [ros-melodic-nodelet-tutorial-math]
|
||||
pluginlib_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-pluginlib-tutorials
|
||||
buster: [ros-melodic-pluginlib-tutorials]
|
||||
roscpp_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-roscpp-tutorials
|
||||
buster: [ros-melodic-roscpp-tutorials]
|
||||
rosout:
|
||||
debian:
|
||||
buster: ros-melodic-rosout
|
||||
buster: [ros-melodic-rosout]
|
||||
async_web_server_cpp:
|
||||
debian:
|
||||
buster: ros-melodic-async-web-server-cpp
|
||||
buster: [ros-melodic-async-web-server-cpp]
|
||||
camera_calibration:
|
||||
debian:
|
||||
buster: ros-melodic-camera-calibration
|
||||
buster: [ros-melodic-camera-calibration]
|
||||
diagnostic_aggregator:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostic-aggregator
|
||||
buster: [ros-melodic-diagnostic-aggregator]
|
||||
diagnostic_updater:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostic-updater
|
||||
buster: [ros-melodic-diagnostic-updater]
|
||||
diagnostic_common_diagnostics:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostic-common-diagnostics
|
||||
buster: [ros-melodic-diagnostic-common-diagnostics]
|
||||
dynamic_reconfigure:
|
||||
debian:
|
||||
buster: ros-melodic-dynamic-reconfigure
|
||||
buster: [ros-melodic-dynamic-reconfigure]
|
||||
filters:
|
||||
debian:
|
||||
buster: ros-melodic-filters
|
||||
buster: [ros-melodic-filters]
|
||||
joint_state_publisher:
|
||||
debian:
|
||||
buster: ros-melodic-joint-state-publisher
|
||||
buster: [ros-melodic-joint-state-publisher]
|
||||
message_filters:
|
||||
debian:
|
||||
buster: ros-melodic-message-filters
|
||||
buster: [ros-melodic-message-filters]
|
||||
ros_pytest:
|
||||
debian:
|
||||
buster: ros-melodic-ros-pytest
|
||||
buster: [ros-melodic-ros-pytest]
|
||||
rosauth:
|
||||
debian:
|
||||
buster: ros-melodic-rosauth
|
||||
buster: [ros-melodic-rosauth]
|
||||
rosbag_storage:
|
||||
debian:
|
||||
buster: ros-melodic-rosbag-storage
|
||||
buster: [ros-melodic-rosbag-storage]
|
||||
rosnode:
|
||||
debian:
|
||||
buster: ros-melodic-rosnode
|
||||
buster: [ros-melodic-rosnode]
|
||||
rospy_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-rospy-tutorials
|
||||
buster: [ros-melodic-rospy-tutorials]
|
||||
rosshow:
|
||||
debian:
|
||||
buster: ros-melodic-rosshow
|
||||
buster: [ros-melodic-rosshow]
|
||||
rostopic:
|
||||
debian:
|
||||
buster: ros-melodic-rostopic
|
||||
buster: [ros-melodic-rostopic]
|
||||
rqt_gui_cpp:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-gui-cpp
|
||||
buster: [ros-melodic-rqt-gui-cpp]
|
||||
rqt_gui_py:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-gui-py
|
||||
buster: [ros-melodic-rqt-gui-py]
|
||||
self_test:
|
||||
debian:
|
||||
buster: ros-melodic-self-test
|
||||
buster: [ros-melodic-self-test]
|
||||
smach_ros:
|
||||
debian:
|
||||
buster: ros-melodic-smach-ros
|
||||
buster: [ros-melodic-smach-ros]
|
||||
tf2_py:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-py
|
||||
buster: [ros-melodic-tf2-py]
|
||||
topic_tools:
|
||||
debian:
|
||||
buster: ros-melodic-topic-tools
|
||||
buster: [ros-melodic-topic-tools]
|
||||
rosbag:
|
||||
debian:
|
||||
buster: ros-melodic-rosbag
|
||||
buster: [ros-melodic-rosbag]
|
||||
actionlib:
|
||||
debian:
|
||||
buster: ros-melodic-actionlib
|
||||
buster: [ros-melodic-actionlib]
|
||||
actionlib_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-actionlib-tutorials
|
||||
buster: [ros-melodic-actionlib-tutorials]
|
||||
diagnostic_analysis:
|
||||
debian:
|
||||
buster: ros-melodic-diagnostic-analysis
|
||||
buster: [ros-melodic-diagnostic-analysis]
|
||||
nodelet_topic_tools:
|
||||
debian:
|
||||
buster: ros-melodic-nodelet-topic-tools
|
||||
buster: [ros-melodic-nodelet-topic-tools]
|
||||
roswtf:
|
||||
debian:
|
||||
buster: ros-melodic-roswtf
|
||||
buster: [ros-melodic-roswtf]
|
||||
rqt_launch:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-launch
|
||||
buster: [ros-melodic-rqt-launch]
|
||||
sensor_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-sensor-msgs
|
||||
buster: [ros-melodic-sensor-msgs]
|
||||
camera_calibration_parsers:
|
||||
debian:
|
||||
buster: ros-melodic-camera-calibration-parsers
|
||||
buster: [ros-melodic-camera-calibration-parsers]
|
||||
cv_bridge:
|
||||
debian:
|
||||
buster: ros-melodic-cv-bridge
|
||||
buster: [ros-melodic-cv-bridge]
|
||||
image_geometry:
|
||||
debian:
|
||||
buster: ros-melodic-image-geometry
|
||||
buster: [ros-melodic-image-geometry]
|
||||
image_transport:
|
||||
debian:
|
||||
buster: ros-melodic-image-transport
|
||||
buster: [ros-melodic-image-transport]
|
||||
camera_info_manager:
|
||||
debian:
|
||||
buster: ros-melodic-camera-info-manager
|
||||
buster: [ros-melodic-camera-info-manager]
|
||||
compressed_depth_image_transport:
|
||||
debian:
|
||||
buster: ros-melodic-compressed-depth-image-transport
|
||||
buster: [ros-melodic-compressed-depth-image-transport]
|
||||
compressed_image_transport:
|
||||
debian:
|
||||
buster: ros-melodic-compressed-image-transport
|
||||
buster: [ros-melodic-compressed-image-transport]
|
||||
cv_camera:
|
||||
debian:
|
||||
buster: ros-melodic-cv-camera
|
||||
buster: [ros-melodic-cv-camera]
|
||||
image_proc:
|
||||
debian:
|
||||
buster: ros-melodic-image-proc
|
||||
buster: [ros-melodic-image-proc]
|
||||
image_publisher:
|
||||
debian:
|
||||
buster: ros-melodic-image-publisher
|
||||
buster: [ros-melodic-image-publisher]
|
||||
map_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-map-msgs
|
||||
buster: [ros-melodic-map-msgs]
|
||||
mavros_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-mavros-msgs
|
||||
buster: [ros-melodic-mavros-msgs]
|
||||
pcl_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-pcl-msgs
|
||||
buster: [ros-melodic-pcl-msgs]
|
||||
pcl_conversions:
|
||||
debian:
|
||||
buster: ros-melodic-pcl-conversions
|
||||
buster: [ros-melodic-pcl-conversions]
|
||||
polled_camera:
|
||||
debian:
|
||||
buster: ros-melodic-polled-camera
|
||||
buster: [ros-melodic-polled-camera]
|
||||
rqt_image_view:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-image-view
|
||||
buster: [ros-melodic-rqt-image-view]
|
||||
stereo_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-stereo-msgs
|
||||
buster: [ros-melodic-stereo-msgs]
|
||||
image_view:
|
||||
debian:
|
||||
buster: ros-melodic-image-view
|
||||
buster: [ros-melodic-image-view]
|
||||
rosbridge_library:
|
||||
debian:
|
||||
buster: ros-melodic-rosbridge-library
|
||||
buster: [ros-melodic-rosbridge-library]
|
||||
stereo_image_proc:
|
||||
debian:
|
||||
buster: ros-melodic-stereo-image-proc
|
||||
buster: [ros-melodic-stereo-image-proc]
|
||||
tf2_ros:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-ros
|
||||
buster: [ros-melodic-tf2-ros]
|
||||
depth_image_proc:
|
||||
debian:
|
||||
buster: ros-melodic-depth-image-proc
|
||||
buster: [ros-melodic-depth-image-proc]
|
||||
mavros:
|
||||
debian:
|
||||
buster: ros-melodic-mavros
|
||||
buster: [ros-melodic-mavros]
|
||||
tf:
|
||||
debian:
|
||||
buster: ros-melodic-tf
|
||||
buster: [ros-melodic-tf]
|
||||
interactive_markers:
|
||||
debian:
|
||||
buster: ros-melodic-interactive-markers
|
||||
buster: [ros-melodic-interactive-markers]
|
||||
interactive_marker_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-interactive-marker-tutorials
|
||||
buster: [ros-melodic-interactive-marker-tutorials]
|
||||
laser_geometry:
|
||||
debian:
|
||||
buster: ros-melodic-laser-geometry
|
||||
buster: [ros-melodic-laser-geometry]
|
||||
laser_assembler:
|
||||
debian:
|
||||
buster: ros-melodic-laser-assembler
|
||||
buster: [ros-melodic-laser-assembler]
|
||||
laser_filters:
|
||||
debian:
|
||||
buster: ros-melodic-laser-filters
|
||||
buster: [ros-melodic-laser-filters]
|
||||
pcl_ros:
|
||||
debian:
|
||||
buster: ros-melodic-pcl-ros
|
||||
buster: [ros-melodic-pcl-ros]
|
||||
tf2_geometry_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-geometry-msgs
|
||||
buster: [ros-melodic-tf2-geometry-msgs]
|
||||
image_rotate:
|
||||
debian:
|
||||
buster: ros-melodic-image-rotate
|
||||
buster: [ros-melodic-image-rotate]
|
||||
tf2_kdl:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-kdl
|
||||
buster: [ros-melodic-tf2-kdl]
|
||||
tf2_web_republisher:
|
||||
debian:
|
||||
buster: ros-melodic-tf2-web-republisher
|
||||
buster: [ros-melodic-tf2-web-republisher]
|
||||
tf_conversions:
|
||||
debian:
|
||||
buster: ros-melodic-tf-conversions
|
||||
buster: [ros-melodic-tf-conversions]
|
||||
theora_image_transport:
|
||||
debian:
|
||||
buster: ros-melodic-theora-image-transport
|
||||
buster: [ros-melodic-theora-image-transport]
|
||||
turtlesim:
|
||||
debian:
|
||||
buster: ros-melodic-turtlesim
|
||||
buster: [ros-melodic-turtlesim]
|
||||
turtle_actionlib:
|
||||
debian:
|
||||
buster: ros-melodic-turtle-actionlib
|
||||
buster: [ros-melodic-turtle-actionlib]
|
||||
turtle_tf:
|
||||
debian:
|
||||
buster: ros-melodic-turtle-tf
|
||||
buster: [ros-melodic-turtle-tf]
|
||||
turtle_tf2:
|
||||
debian:
|
||||
buster: ros-melodic-turtle-tf2
|
||||
buster: [ros-melodic-turtle-tf2]
|
||||
urdf:
|
||||
debian:
|
||||
buster: ros-melodic-urdf
|
||||
buster: [ros-melodic-urdf]
|
||||
kdl_parser:
|
||||
debian:
|
||||
buster: ros-melodic-kdl-parser
|
||||
buster: [ros-melodic-kdl-parser]
|
||||
kdl_parser_py:
|
||||
debian:
|
||||
buster: ros-melodic-kdl-parser-py
|
||||
buster: [ros-melodic-kdl-parser-py]
|
||||
mavros_extras:
|
||||
debian:
|
||||
buster: ros-melodic-mavros-extras
|
||||
buster: [ros-melodic-mavros-extras]
|
||||
robot_state_publisher:
|
||||
debian:
|
||||
buster: ros-melodic-robot-state-publisher
|
||||
buster: [ros-melodic-robot-state-publisher]
|
||||
rviz:
|
||||
debian:
|
||||
buster: ros-melodic-rviz
|
||||
buster: [ros-melodic-rviz]
|
||||
librviz_tutorial:
|
||||
debian:
|
||||
buster: ros-melodic-librviz-tutorial
|
||||
buster: [ros-melodic-librviz-tutorial]
|
||||
rqt_rviz:
|
||||
debian:
|
||||
buster: ros-melodic-rqt-rviz
|
||||
buster: [ros-melodic-rqt-rviz]
|
||||
rviz_plugin_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-rviz-plugin-tutorials
|
||||
buster: [ros-melodic-rviz-plugin-tutorials]
|
||||
rviz_python_tutorial:
|
||||
debian:
|
||||
buster: ros-melodic-rviz-python-tutorial
|
||||
buster: [ros-melodic-rviz-python-tutorial]
|
||||
urdf_tutorial:
|
||||
debian:
|
||||
buster: ros-melodic-urdf-tutorial
|
||||
buster: [ros-melodic-urdf-tutorial]
|
||||
usb_cam:
|
||||
debian:
|
||||
buster: ros-melodic-usb-cam
|
||||
buster: [ros-melodic-usb-cam]
|
||||
visualization_marker_tutorials:
|
||||
debian:
|
||||
buster: ros-melodic-visualization-marker-tutorials
|
||||
buster: [ros-melodic-visualization-marker-tutorials]
|
||||
vl53l1x:
|
||||
debian:
|
||||
buster: ros-melodic-vl53l1x
|
||||
buster: [ros-melodic-vl53l1x]
|
||||
web_video_server:
|
||||
debian:
|
||||
buster: ros-melodic-web-video-server
|
||||
buster: [ros-melodic-web-video-server]
|
||||
xacro:
|
||||
debian:
|
||||
buster: ros-melodic-xacro
|
||||
buster: [ros-melodic-xacro]
|
||||
led_msgs:
|
||||
debian:
|
||||
buster: ros-melodic-led-msgs
|
||||
buster: [ros-melodic-led-msgs]
|
||||
ws281x:
|
||||
debian:
|
||||
stretch: ros-melodic-ws281x
|
||||
buster: [ros-melodic-ws281x]
|
||||
ddynamic_reconfigure:
|
||||
debian:
|
||||
buster: [ros-melodic-ddynamic-reconfigure]
|
||||
librealsense2:
|
||||
debian:
|
||||
buster: [ros-melodic-librealsense2]
|
||||
realsense2_camera:
|
||||
debian:
|
||||
buster: [ros-melodic-realsense2-camera]
|
||||
realsense2_description:
|
||||
debian:
|
||||
buster: [ros-melodic-realsense2-description]
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
[Unit]
|
||||
Description=Launcher for the ROS master, parameter server and rosout logging node
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=pi
|
||||
|
||||
113
builder/assets/rsyslog.conf
Normal file
113
builder/assets/rsyslog.conf
Normal file
@@ -0,0 +1,113 @@
|
||||
# /etc/rsyslog.conf configuration file for rsyslog
|
||||
#
|
||||
# For more information install rsyslog-doc and see
|
||||
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
|
||||
|
||||
|
||||
#################
|
||||
#### MODULES ####
|
||||
#################
|
||||
|
||||
module(load="imuxsock") # provides support for local system logging
|
||||
module(load="imklog") # provides kernel logging support
|
||||
#module(load="immark") # provides --MARK-- message capability
|
||||
|
||||
# provides UDP syslog reception
|
||||
#module(load="imudp")
|
||||
#input(type="imudp" port="514")
|
||||
|
||||
# provides TCP syslog reception
|
||||
#module(load="imtcp")
|
||||
#input(type="imtcp" port="514")
|
||||
|
||||
|
||||
###########################
|
||||
#### GLOBAL DIRECTIVES ####
|
||||
###########################
|
||||
|
||||
#
|
||||
# Use traditional timestamp format.
|
||||
# To enable high precision timestamps, comment out the following line.
|
||||
#
|
||||
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
|
||||
|
||||
#
|
||||
# Set the default permissions for all log files.
|
||||
#
|
||||
$FileOwner root
|
||||
$FileGroup adm
|
||||
$FileCreateMode 0640
|
||||
$DirCreateMode 0755
|
||||
$Umask 0022
|
||||
|
||||
#
|
||||
# Where to place spool and state files
|
||||
#
|
||||
$WorkDirectory /var/spool/rsyslog
|
||||
|
||||
#
|
||||
# Limit log to 40 messages per second on average (should be plenty)
|
||||
#
|
||||
$SystemLogRateLimitInterval 5
|
||||
$SystemLogRateLimitBurst 200
|
||||
|
||||
#
|
||||
# Include all config files in /etc/rsyslog.d/
|
||||
#
|
||||
$IncludeConfig /etc/rsyslog.d/*.conf
|
||||
|
||||
#
|
||||
# Enable custom output channels to limit file sizes
|
||||
#
|
||||
$outchannel limauth,/var/log/auth.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/auth.log
|
||||
$outchannel limsyslog,/var/log/syslog,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/syslog
|
||||
$outchannel limdaemon,/var/log/daemon.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/daemon.log
|
||||
$outchannel limkern,/var/log/kern.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/kern.log
|
||||
$outchannel limlpr,/var/log/lpr.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/lpr.log
|
||||
$outchannel limmail,/var/log/mail.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/mail.log
|
||||
$outchannel limmailinfo,/var/log/mail.info,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/mail.info
|
||||
$outchannel limmailwarn,/var/log/mail.warn,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/mail.warn
|
||||
$outchannel limmailerr,/var/log/mail.err,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/mail.err
|
||||
$outchannel limuser,/var/log/user.log,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/user.log
|
||||
$outchannel limdebug,/var/log/debug,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/debug
|
||||
$outchannel limmsgs,/var/log/messages,10485760,/etc/rsyslog.d/rsysrot.sh /var/log/messages
|
||||
|
||||
###############
|
||||
#### RULES ####
|
||||
###############
|
||||
|
||||
#
|
||||
# First some standard log files. Log by facility.
|
||||
#
|
||||
auth,authpriv.* :omfile:$limauth
|
||||
*.*;auth,authpriv.none :omfile:$limsyslog
|
||||
#cron.* /var/log/cron.log
|
||||
daemon.* :omfile:$limdaemon
|
||||
kern.* :omfile:$limkern
|
||||
lpr.* :omfile:$limlpr
|
||||
mail.* :omfile:$limmail
|
||||
user.* :omfile:$limuser
|
||||
|
||||
#
|
||||
# Logging for the mail system. Split it up so that
|
||||
# it is easy to write scripts to parse these files.
|
||||
#
|
||||
mail.info :omfile:$limmailinfo
|
||||
mail.warn :omfile:$limmailwarn
|
||||
mail.err :omfile:$limmailerr
|
||||
|
||||
#
|
||||
# Some "catch-all" log files.
|
||||
#
|
||||
*.=debug;\
|
||||
auth,authpriv.none;\
|
||||
news.none;mail.none :omfile:$limdebug
|
||||
*.=info;*.=notice;*.=warn;\
|
||||
auth,authpriv.none;\
|
||||
cron,daemon.none;\
|
||||
mail,news.none :omfile:$limmsgs
|
||||
|
||||
#
|
||||
# Emergencies are sent to everybody logged in.
|
||||
#
|
||||
*.emerg :omusrmsg:*
|
||||
4
builder/assets/rsysrot.sh
Executable file
4
builder/assets/rsysrot.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
LOG_FILE=$1
|
||||
mv -f ${LOG_FILE} ${LOG_FILE}.1
|
||||
@@ -95,7 +95,9 @@ done
|
||||
|
||||
# Monkey
|
||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey' '/root/'
|
||||
|
||||
# rsyslog config
|
||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/rsyslog.conf' '/etc'
|
||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/rsysrot.sh' '/etc/rsyslog.d'
|
||||
# Butterfly
|
||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.service' '/lib/systemd/system/'
|
||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.socket' '/lib/systemd/system/'
|
||||
|
||||
@@ -111,7 +111,7 @@ cd /home/pi/catkin_ws/src/clever
|
||||
NPM_CONFIG_UNSAFE_PERM=true npm install gitbook-cli -g
|
||||
NPM_CONFIG_UNSAFE_PERM=true gitbook install
|
||||
gitbook build
|
||||
touch node_modules/CATKIN_IGNORE docs/CATKIN_IGNORE _book/CATKIN_IGNORE # ignore documentation files by catkin
|
||||
touch node_modules/CATKIN_IGNORE docs/CATKIN_IGNORE _book/CATKIN_IGNORE clever/www/CATKIN_IGNORE apps/CATKIN_IGNORE # ignore documentation files by catkin
|
||||
|
||||
echo_stamp "Installing additional ROS packages"
|
||||
apt-get install -y --no-install-recommends \
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
<!-- vl53l1x ToF rangefinder -->
|
||||
<node name="rangefinder" pkg="vl53l1x" type="vl53l1x_node" output="screen" if="$(arg rangefinder_vl53l1x)">
|
||||
<param name="frame_id" value="rangefinder"/>
|
||||
<param name="min_signal" value="0.4"/>
|
||||
<param name="pass_statuses" type="yaml" value="[0, 6, 7, 11]"/>
|
||||
</node>
|
||||
|
||||
<!-- led strip -->
|
||||
|
||||
@@ -278,7 +278,8 @@ void handleLog(const rosgraph_msgs::Log& log)
|
||||
void handleBattery(const sensor_msgs::BatteryState& msg)
|
||||
{
|
||||
for (auto const& voltage : msg.cell_voltage) {
|
||||
if (voltage < low_battery_threshold) {
|
||||
if (voltage < low_battery_threshold &&
|
||||
voltage > 2.0) { // voltage < 2.0 likely indicates incorrect voltage measurement
|
||||
// notify low battery every time
|
||||
notify("low_battery");
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
|
||||
import os
|
||||
import math
|
||||
import subprocess
|
||||
import re
|
||||
@@ -94,7 +95,7 @@ def get_param(name):
|
||||
return None
|
||||
|
||||
if not res.success:
|
||||
failure('Unable to retrieve PX4 parameter %s', name)
|
||||
failure('unable to retrieve PX4 parameter %s', name)
|
||||
else:
|
||||
if res.value.integer != 0:
|
||||
return res.value.integer
|
||||
@@ -244,15 +245,18 @@ def check_fcu():
|
||||
|
||||
cbrk_usb_chk = get_param('CBRK_USB_CHK')
|
||||
if cbrk_usb_chk != 197848:
|
||||
failure('Set parameter CBRK_USB_CHK to 197848 for flying with USB connected')
|
||||
failure('set parameter CBRK_USB_CHK to 197848 for flying with USB connected')
|
||||
|
||||
try:
|
||||
battery = rospy.wait_for_message('mavros/battery', BatteryState, timeout=3)
|
||||
cell = battery.cell_voltage[0]
|
||||
if cell > 4.3 or cell < 3.0:
|
||||
failure('Incorrect cell voltage: %.2f V, https://clever.coex.tech/power', cell)
|
||||
elif cell < 3.7:
|
||||
failure('Critically low cell voltage: %.2f V, recharge battery', cell)
|
||||
if not battery.cell_voltage:
|
||||
failure('cell voltage is not available, https://clever.coex.tech/power')
|
||||
else:
|
||||
cell = battery.cell_voltage[0]
|
||||
if cell > 4.3 or cell < 3.0:
|
||||
failure('incorrect cell voltage: %.2f V, https://clever.coex.tech/power', cell)
|
||||
elif cell < 3.7:
|
||||
failure('critically low cell voltage: %.2f V, recharge battery', cell)
|
||||
except rospy.ROSException:
|
||||
failure('no battery state')
|
||||
|
||||
@@ -692,9 +696,67 @@ def check_preflight_status():
|
||||
failure(' '.join([match.groups()[1], 'check:', check_status]))
|
||||
|
||||
|
||||
@check('Network')
|
||||
def check_network():
|
||||
ros_hostname = os.environ.get('ROS_HOSTNAME').strip()
|
||||
|
||||
if not ros_hostname:
|
||||
failure('no ROS_HOSTNAME is set')
|
||||
|
||||
elif ros_hostname.endswith('.local'):
|
||||
# using mdns hostname
|
||||
hosts = open('/etc/hosts', 'r')
|
||||
for line in hosts:
|
||||
parts = line.split()
|
||||
if len(parts) < 2:
|
||||
continue
|
||||
ip = parts.pop(0).split('.')
|
||||
if ip[0] == '127': # loopback ip
|
||||
if ros_hostname in parts:
|
||||
break
|
||||
else:
|
||||
failure('not found %s in /etc/hosts, ROS will malfunction if network interfaces are down, https://clever.coex.tech/hostname', ros_hostname)
|
||||
|
||||
|
||||
@check('RPi health')
|
||||
def check_rpi_health():
|
||||
# `vcgencmd get_throttled` output codes taken from
|
||||
# https://github.com/raspberrypi/documentation/blob/JamesH65-patch-vcgencmd-vcdbg-docs/raspbian/applications/vcgencmd.md#get_throttled
|
||||
# TODO: support more base platforms?
|
||||
FLAG_UNDERVOLTAGE_NOW = 0x1
|
||||
FLAG_FREQ_CAP_NOW = 0x2
|
||||
FLAG_THROTTLING_NOW = 0x4
|
||||
FLAG_THERMAL_LIMIT_NOW = 0x8
|
||||
FLAG_UNDERVOLTAGE_OCCURRED = 0x10000
|
||||
FLAG_FREQ_CAP_OCCURRED = 0x20000
|
||||
FLAG_THROTTLING_OCCURRED = 0x40000
|
||||
FLAG_THERMAL_LIMIT_OUCCURRED = 0x80000
|
||||
|
||||
try:
|
||||
# vcgencmd outputs a single string in a form of
|
||||
# <parameter>=<value>
|
||||
# In case of `get_throttled`, <value> is a hexadecimal number
|
||||
# with some of the FLAGs OR'ed together
|
||||
output = subprocess.check_output(['vcgencmd', 'get_throttled'])
|
||||
except OSError:
|
||||
failure('could not call vcgencmd binary; not a Raspberry Pi?')
|
||||
return
|
||||
|
||||
throttle_mask = int(output.split('=')[1], base=16)
|
||||
if throttle_mask & (FLAG_THROTTLING_NOW | FLAG_THROTTLING_OCCURRED):
|
||||
failure('system throttled to prevent damage')
|
||||
if throttle_mask & (FLAG_UNDERVOLTAGE_NOW | FLAG_UNDERVOLTAGE_OCCURRED):
|
||||
failure('not enough power for onboard computer, flight inadvisable')
|
||||
if throttle_mask & (FLAG_FREQ_CAP_NOW | FLAG_FREQ_CAP_OCCURRED):
|
||||
failure('CPU frequency reduced to avoid overheating')
|
||||
if throttle_mask & (FLAG_THERMAL_LIMIT_NOW | FLAG_THERMAL_LIMIT_OUCCURRED):
|
||||
failure('CPU over soft temperature limit, expect performance loss')
|
||||
|
||||
|
||||
def selfcheck():
|
||||
check_image()
|
||||
check_clever_service()
|
||||
check_network()
|
||||
check_fcu()
|
||||
check_imu()
|
||||
check_local_position()
|
||||
@@ -707,6 +769,7 @@ def selfcheck():
|
||||
check_optical_flow()
|
||||
check_vpe()
|
||||
check_rangefinder()
|
||||
check_rpi_health()
|
||||
check_cpu_usage()
|
||||
check_boot_duration()
|
||||
|
||||
|
||||
15980
docs/assets/dxf/arm.dxf
Normal file
15980
docs/assets/dxf/arm.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15376
docs/assets/dxf/big_leg.dxf
Normal file
15376
docs/assets/dxf/big_leg.dxf
Normal file
File diff suppressed because it is too large
Load Diff
18364
docs/assets/dxf/central_plate.dxf
Normal file
18364
docs/assets/dxf/central_plate.dxf
Normal file
File diff suppressed because it is too large
Load Diff
19794
docs/assets/dxf/deck.dxf
Normal file
19794
docs/assets/dxf/deck.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15378
docs/assets/dxf/grab_spacer.dxf
Normal file
15378
docs/assets/dxf/grab_spacer.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15206
docs/assets/dxf/led_mount_plate.dxf
Normal file
15206
docs/assets/dxf/led_mount_plate.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15334
docs/assets/dxf/leg.dxf
Normal file
15334
docs/assets/dxf/leg.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15256
docs/assets/dxf/prop_guard.dxf
Normal file
15256
docs/assets/dxf/prop_guard.dxf
Normal file
File diff suppressed because it is too large
Load Diff
15790
docs/assets/dxf/prop_guard_mount.dxf
Normal file
15790
docs/assets/dxf/prop_guard_mount.dxf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/assets/programming.png
Executable file
BIN
docs/assets/programming.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 104 KiB |
BIN
docs/assets/raspberry.png
Executable file
BIN
docs/assets/raspberry.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB |
@@ -20,34 +20,37 @@
|
||||
* [Connection to the Pixracer](connection.md)
|
||||
* [Using QGroundControl over Wi-Fi](gcs_bridge.md)
|
||||
* [Remote shell](ssh.md)
|
||||
* [Editing files](editing.md)
|
||||
* [Command line interface](cli.md)
|
||||
* [Automated self-checks](selfcheck.md)
|
||||
* [Viewing images from cameras](web_video_server.md)
|
||||
* Programming
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.md)
|
||||
* [Overview](programming.md)
|
||||
* [Camera orientation](camera_frame.md)
|
||||
* [Coordinate systems (frames)](frames.md)
|
||||
* [Simple OFFBOARD](simple_offboard.md)
|
||||
* [Code snippets](snippets.md)
|
||||
* Fiducial markers (ArUco)
|
||||
* [Overview](aruco.md)
|
||||
* [Marker detection](aruco_marker.md)
|
||||
* [Map-based navigation](aruco_map.md)
|
||||
* [Optical Flow](optical_flow.md)
|
||||
* [Computer vision basics](camera.md)
|
||||
* [Simple OFFBOARD](simple_offboard.md)
|
||||
* [Coordinate systems (frames)](frames.md)
|
||||
* [Code snippets](snippets.md)
|
||||
* [Interfacing with a laser rangefinder](laser.md)
|
||||
* [LED strip](leds.md)
|
||||
* [Working with GPIO](gpio.md)
|
||||
* [Interfacing with a sonar](sonar.md)
|
||||
* [Computer vision basics](camera.md)
|
||||
* [Using rviz and rqt](rviz.md)
|
||||
* [Interfacing with a laser rangefinder](laser.md)
|
||||
* [Software autorun](autolaunch.md)
|
||||
* [Software autorun](autolaunch.md)
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.md)
|
||||
* Supplementary materials
|
||||
* [COEX Pix](coex_pix.md)
|
||||
* [Guide on autonomous flight](auto_setup.md)
|
||||
* [Hostname](hostname.md)
|
||||
* [PX4 Simulation](sitl.md)
|
||||
* [PID Setup](calibratePID.md)
|
||||
* [ROS Kinetic installation](ros-install.md)
|
||||
* [Model files for parts](models.md)
|
||||
* [ROS Melodic installation](ros-install.md)
|
||||
* [Remote control app](rc.md)
|
||||
* [Wi-Fi Configuration](network.md)
|
||||
* [UART settings](uart.md)
|
||||
@@ -75,5 +78,6 @@
|
||||
* [Android RC app](android.md)
|
||||
* [3D-scanning drone](3dscan.md)
|
||||
* [Human pose estimation drone control](human_pose_estimation_drone_control.md)
|
||||
* [Copter Hack 2019](copterhack2019.md)
|
||||
* [Copter Hack 2018](copterhack2018.md)
|
||||
* [Copter Hack 2017](copterhack2017.md)
|
||||
|
||||
@@ -25,7 +25,7 @@ This manual contains links to other articles in which each of the topics address
|
||||
|
||||
- You can change the name and password of the network if you want to. See the article "[Network Settings] (network.md # change-password-or-ssid-network-name)". The remaining operations with the network are unnecessary.
|
||||
|
||||
- Use the nano editor to edit files. [Instructions for working with nano] (editing.md).
|
||||
- Use the nano editor to edit files. [Instructions for working with nano](cli.md#editing).
|
||||
|
||||
> **Hint** In nano, you can only move the cursor with the arrow keys on the keyboard.
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ Additionally you can specify an arbitrary capture parameter using its [OpenCV co
|
||||
|
||||
## Computer vision
|
||||
|
||||
The [SD card image](image.md) comes with a preinstalled [OpenCV](https://opencv.org) library, which is commonly used for various comupter vision-related tasks. Additional libraries for converting from ROS messages to OpenCV images and back are preinstalled as well.
|
||||
The [SD card image](image.md) comes with a preinstalled [OpenCV](https://opencv.org) library, which is commonly used for various computer vision-related tasks. Additional libraries for converting from ROS messages to OpenCV images and back are preinstalled as well.
|
||||
|
||||
### Python
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> **Note** Documentation for the versions [of image](image.md), starting with **0.15**. For earlier versions, see [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/camera_frame.md).
|
||||
|
||||
Position and orientation of the main camera is determined in file `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
Position and orientation of the main camera is [set in file](cli.md#editing) `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0 0 -0.07 -1.5707963 0 3.1415926 base_link main_camera_optical"/>
|
||||
|
||||
80
docs/en/cli.md
Normal file
80
docs/en/cli.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Command line interface
|
||||
|
||||
The Raspberry Pi OS, Raspbian, uses CLI as its primary user interface (which is common for Linux-based operating systems). You can use [a secure shell connection](ssh.md) to access the command line.
|
||||
|
||||
## Basic commands
|
||||
|
||||
> **Hint** Double-tapping the `Tab ↹` key autocompletes the command or its argument. This is known as "tab completion".
|
||||
|
||||
Show the contents of the current directory:
|
||||
|
||||
```bash
|
||||
ls
|
||||
```
|
||||
|
||||
Change current (working) directory:
|
||||
|
||||
```bash
|
||||
cd catkin_ws/src/clever/clever/launch
|
||||
```
|
||||
|
||||
Go one directory level up:
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
```
|
||||
|
||||
Print path to the current directory:
|
||||
|
||||
```bash
|
||||
pwd
|
||||
```
|
||||
|
||||
Print contents of the `file.py` file:
|
||||
|
||||
```bash
|
||||
cat file.py
|
||||
```
|
||||
|
||||
Run `file.py` as a Python script:
|
||||
|
||||
```bash
|
||||
python file.py
|
||||
```
|
||||
|
||||
Reboot Raspberry Pi:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
You can terminate currently running (foreground) program by pressing `Ctrl`+`C`.
|
||||
|
||||
Read more about the Linux command line in the Raspberry Pi documentation: https://www.raspberrypi.org/documentation/linux/usage/commands.md.
|
||||
|
||||
## Editing files {#editing}
|
||||
|
||||
You can use **nano** to edit files on the Raspberry Pi. It is one of the more user-friendly console-based text editor.
|
||||
|
||||
1. Use the following command to edit or create a file:
|
||||
|
||||
```bash
|
||||
nano path/to/file
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
nano ~/catkin_ws/src/clever/clever/launch/clever.launch
|
||||
```
|
||||
|
||||
<img src="../assets/nano.png" alt="Editing files in nano" data-action="zoom">
|
||||
2. Edit the file.
|
||||
3. Press `Ctrl`+`X`, `Y`, `Enter` to save your file and exit.
|
||||
4. Restart the `clever` package if you've changed .launch files:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
You may also use other editors like **vim** if you prefer.
|
||||
60
docs/en/coex_pix.md
Normal file
60
docs/en/coex_pix.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# COEX Pix
|
||||
|
||||
The **COEX Pix** flight controller is a modified [Pixracer](https://docs.px4.io/v1.9.0/en/flight_controller/pixracer.html) FCU. It is a part of the **Clever 4** quadrotor kit.
|
||||
|
||||
## Revision 1.1
|
||||
|
||||
### Physical specs
|
||||
|
||||
* Board size: 35x35 mm.
|
||||
* Mounting hole pattern: standard 30.5 mm.
|
||||
* Mounting hole diameter: 3.2 mm.
|
||||
* Board mass: 9 g.
|
||||
* Operating temperature range: -5..+65 ºC.
|
||||
* Input voltage: 4.8..5.5 V.
|
||||
|
||||
### Key features
|
||||
|
||||
* Main System-on-Chip: *STM32F427VIT6*.
|
||||
* FRAM chip: *FM25V02A*
|
||||
* Built-in sensors:
|
||||
* *MPU9250* 9DOF accelerometer/gyroscope/magnetometer.
|
||||
* *MS5607* barometer.
|
||||
|
||||
### Ports
|
||||
|
||||
* *TELEM 1* (JST-GH 4 pin) – telemetry port 1, UART.
|
||||
* *TELEM 2* (JST-GH 4 pin) – telemetry port 2, UART.
|
||||
* *GPS* (JST-GH 6 pin) – GNSS (UART) and external compass (I2C) port.
|
||||
* *I2C* (JST-GH 4 pin) – I2C port for supported devices (shares lanes with *GPS* port).
|
||||
* *PWR* (JST-GH 6 pin) – port for PDB connection (COEX PDB or compatible), with two power lanes, two ground lanes, and voltage and current sensor inputs.
|
||||
* *RC IN* (JST-GH 4 pin) – RC input port with RSSI pin. Supports PPM and S.BUS protocols.
|
||||
* Micro USB port for PC connection (USB 2.0/1.1).
|
||||
* MicroSD slot (supports up to 32gb microSD cards).
|
||||
* 6 servo outputs for ESCs and other peripherals.
|
||||
|
||||
### Port pinouts
|
||||
|
||||
<img src="../assets/coexpix-top.jpg" width="400" class="zoom">
|
||||
|
||||
<img src="../assets/coexpix-bottom.jpg" width="400" class="zoom">
|
||||
|
||||
> **Note** On rev. 1.0 boards *RC IN* port and microSD slot are switched. Pinout for the *RC IN* port is the same on these boards.
|
||||
|
||||
### Mounting suggestions
|
||||
|
||||
**Important**: The board is meant to be installed with a non-standard orientation (roll 180º, yaw 90º) on the Clever airframe. Therefore, the `SENS_BOARD_ROT` PX4 parameter should be set to `ROLL 180, YAW 90`.
|
||||
|
||||
### Usage notes
|
||||
|
||||
In order to reduce magnetic interference from the PDB and power cables you should mount the FCU as far away from these parts as possible. You should have at least 15 mm clearance from high-power parts.
|
||||
|
||||
You may want to disable internal compass if you're using an external GNSS+compass module.
|
||||
|
||||
If your drone does not have a protective cover for the FCU, you should place a piece of foam over the barometer.
|
||||
|
||||
The FCU has power passthrough from the *PWR* input to the servo rail. Supplying additional power to the servo rail is not recommended if the *PWR* input is used. Powering the FCU from USB and *PWR*/*AUX* inputs is acceptable.
|
||||
|
||||
### Board specifics
|
||||
|
||||
The board utilizes low-noise DC-DC converters, voltage inputs have LC and ferrite filters.
|
||||
@@ -1,60 +1,52 @@
|
||||
Connecting Pixhawk/Pixracer to Raspberry Pi
|
||||
===
|
||||
# Connecting Raspberry Pi to the flight controller
|
||||
|
||||
To program [autonomous flights](simple_offboard.md) [work with Pixhawk (Pixracer) over Wi-Fi](gcs_bridge.md), use [of a phone transmitter] (rc.md), and other functions, it is necessary to connect Raspberry Pi to Pixhawk (Pixracer).
|
||||
In order to program [autonomous flights](simple_offboard.md), [work with Pixhawk or Pixracer over Wi-Fi](gcs_bridge.md), use [controller app](rc.md) and access other functions you need to connect your Raspberry Pi to the flight controller.
|
||||
|
||||
Check operability of the connection [by running on Raspberry Pi](ssh.md):
|
||||
## USB connection
|
||||
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
USB connection is the preferred way to connect to the flight controller.
|
||||
|
||||
The `connected` field should contain value `True`.
|
||||
1. Connect your FCU to the Raspberry Pi using a microUSB to USB cable.
|
||||
2. [Connect to the Raspberry Pi over SSH](ssh.md).
|
||||
3. Make sure the connection is working by [running the following command on the Raspberry Pi](ssh.md):
|
||||
|
||||
Connection via USB
|
||||
---
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
|
||||
Connect Pixhawk/Pixracer to micro USB in Raspberry Pi with a USB cable.
|
||||
The `connected` field should have the `True` value.s
|
||||
|
||||
Make sure that in Clever launch file (`~/catkin_ws/src/clever/clever/launch/clever.launch`), connection type is set to USB:
|
||||
> **Hint** You need to set the `CBRK_USB_CHK` [parameter](px4_parameters.md) to 197848 for the USB connection to work.
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="usb"/>
|
||||
```
|
||||
## UART connection
|
||||
|
||||
After the launch file is edited, restart package `clever`:
|
||||
<!-- TODO: Connection scheme -->
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
UART connection is another way for the Raspberry Pi and FCU to communicate.
|
||||
|
||||
> **Hint** For correct operation of the Raspberry Pi connection to Pixhawk via USB, set value of [parameter](px4_parameters.md) `CBRK_USB_CHK` to 197848.
|
||||
1. Connect Raspberry Pi to your FCU using a UART cable.
|
||||
2. [Connect to the Raspberry Pi over SSH](ssh.md).
|
||||
3. Change the connection type in `~/catkin_ws/src/clever/clever/launch/clever.launch` to UART:
|
||||
|
||||
Connection via UART
|
||||
---
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
|
||||
TODO connection diagram
|
||||
Be sure to restart the `clever` service after editing the .launch file:
|
||||
|
||||
Make sure that in Clever launch file (`~/catkin_ws/src/clever/clever/clever.launch`), connection type is set to UART:
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
> **Hint** Set the `SYS_COMPANION` PX4 parameter to 921600 to enable UART on the FCU.
|
||||
|
||||
After the launch-file is edited, restart package `clever`:
|
||||
## SITL connection
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
> **Hint** For correct operation of the Raspberry Pi connection to Pixhawk via UART, set value of parameter`SYS_COMPANION` to 921600.
|
||||
|
||||
Connection to SITL
|
||||
---
|
||||
|
||||
To connect locally/remotely to a running [SITL](sitl.md), set argument `fcu_conn` to `udp`, and `fcu_ip` to the IP address of the machine where SITL is running (`127.0.0.1` for local):
|
||||
In order to connect to a local or a remote [SITL](sitl.md) instance set the `fcu_conn` parameter to `udp` and `fcu_ip` to the IP address of the SITL instance (`127.0.0.1` if you are running the instance locally):
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="udp"/>
|
||||
<arg name="fcu_ip" default="127.0.0.1"/>
|
||||
```
|
||||
|
||||
**Next**: [Using QGroundControl over Wi-Fi](gcs_bridge.md)
|
||||
|
||||
94
docs/en/copterhack2019.md
Normal file
94
docs/en/copterhack2019.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Copter Hack 2019
|
||||
|
||||
The [Copter Hack 2019](https://copterexpress.timepad.ru/event/1017592/) hackathon took place on the 11th to 13th of October in the "Moscow" Technopolis.
|
||||
|
||||
Event page: https://coex.tech/copterhack.
|
||||
|
||||
Hackathon chat: https://t.me/CopterHack.
|
||||
|
||||
Timepad event page: https://copterexpress.timepad.ru/event/1017592/.
|
||||
|
||||
## Information for participants
|
||||
|
||||
### COEX Pix specifics
|
||||
|
||||
Be sure to set the *Autopilot orientation* parameter to `ROTATION_ROLL_180_YAW_90` if you're using the *COEX Pix* flight controller. This parameter should be applied during calibration of each sensor.
|
||||
|
||||
<img src="../assets/autopilot_orientation.png" class="center" width="600">
|
||||
|
||||
This parameter is used for *IMU* orientation correction.
|
||||
|
||||
### Suggested image versions
|
||||
|
||||
Raspberry Pi versions 3B+ and lower: [v0.18](https://github.com/CopterExpress/clever/releases/tag/v0.18)
|
||||
|
||||
Raspberry Pi version 4: [v0.19-alpha.1](https://github.com/CopterExpress/clever/releases/tag/v0.19-alpha.1)
|
||||
|
||||
### Camera orientation
|
||||
|
||||
Some drones have the camera mounted with the cable going forward. You should set this orientation in the `main_camera.launch` file in the `clever` package.
|
||||
|
||||
Further reading: [Camera orientation](camera_frame.md)
|
||||
|
||||
### Using Optical Flow
|
||||
|
||||
In order to enable optical flow set `optical_flow` and `rangefinder_vl53l1x` parameters to `true` in `clever.launch`.
|
||||
|
||||
Enable `pub agl as lpos down` in `LPE_FUSION` parameter using QGroundControl.
|
||||
|
||||
Make sure the rangefinder is mounted correctly and is working (see [Interfacing with a laser rangefinder](laser.md)).
|
||||
|
||||
Further reading: [Optical Flow](optical_flow.md).
|
||||
|
||||
### Using ArUco map
|
||||
|
||||
Use the `cmit.txt` map. See [instructions](aruco_map.md).
|
||||
|
||||
### Drone batteries
|
||||
|
||||
**The battery indicator should be connected to the battery at all times. The organizers will not replace your damaged batteries!**
|
||||
|
||||
### Flight videos
|
||||
|
||||
Be sure to record **ALL** your flights on video! If your drone fails before your presentation, you'll be able to at least show your videos.
|
||||
|
||||
### Yaw problem
|
||||
|
||||
The v1.8.2-clever.7 FCU firmware has a potential bug that manifests during VPE (marker-based) flights. If your drone does not correct its yaw when using ArUco markers, try using an older firmware version (v1.8.2-clever.6, available from https://github.com/CopterExpress/Firmware/releases/tag/v1.8.2-clever.6). Download `px4fmu-v4_default.px4` for COEX Pix.
|
||||
|
||||
### `navigate` service problem
|
||||
|
||||
The 0.18 Raspberry Pi image has a potential bug that makes the drone fly through waypoints too fast. Try setting the `nav_from_sp` parameter to `false` in `~/catkin_ws/src/clever/clever/launch/clever.launch` if you are affected by it:
|
||||
|
||||
```xml
|
||||
<!-- simplified offboard control -->
|
||||
<node name="simple_offboard" pkg="clever" type="simple_offboard" output="screen" clear_params="true">
|
||||
<param name="reference_frames/body" value="map"/>
|
||||
<param name="reference_frames/base_link" value="map"/>
|
||||
<param name="reference_frames/navigate_target" value="map"/>
|
||||
<param name="reference_frames/navigate_target" value="map"/>
|
||||
<param name="nav_from_sp" value="false"/>
|
||||
</node>
|
||||
```
|
||||
|
||||
## Lectures (in Russian)
|
||||
|
||||
Lecture 1: Introduction – https://www.youtube.com/watch?v=cjtmZNuq7z0.
|
||||
|
||||
Lecture 2: FCU setup – https://www.youtube.com/watch?v=PJNDYFPZQms.
|
||||
|
||||
Lecture 3: PX4 architecture – https://www.youtube.com/watch?v=_jl7FImq3jk.
|
||||
|
||||
Lecture 4: Autonomous flights – https://www.youtube.com/watch?v=ThXiNG1IzvI.
|
||||
|
||||
Be sure to check out other videos on the COEX YouTube channel: https://www.youtube.com/channel/UCeCu93sLBkcgbIkIC7Jaauw/featured.
|
||||
|
||||
## Results
|
||||
|
||||
Winners:
|
||||
|
||||
1. Bulbolet – potato delivery using a smart hoist.
|
||||
2. Copter don't hurt me – controlling drone using a neural interface.
|
||||
3. import torch – active track using neural networks.
|
||||
4. Autobot – freeze light through a VK bot.
|
||||
5. Stardust Crusaders – AR drone simulation.
|
||||
@@ -1,5 +0,0 @@
|
||||
# Editing files
|
||||
|
||||
Use **nano** text editor to edit files on a Raspberry Pi.
|
||||
|
||||
<!-- TODO -->
|
||||
@@ -12,6 +12,11 @@ Main frames in the `clever` package:
|
||||
* `body` is bound to the drone, but its Z axis points up regardless of the drone's pitch and roll. It is shown by the red, blue and green lines in the illustration;
|
||||
* `navigate_target` is bound to the current navigation target (as set by the [navigate](simple_offboard.md#navigate) service).
|
||||
|
||||
Additional frames become available when [ArUco positioning system](aruco.md) is active:
|
||||
|
||||
* `aruco_map` is bound to the currently active [ArUco map](aruco_map.md);
|
||||
* `aruco_N` is bound to the [marker](aruco_marker.md) with ID=N.
|
||||
|
||||
> **Hint** Frames that are bound to the drone are oriented according to [the ROS convention](http://www.ros.org/reps/rep-0103.html): the X axis points forward, Y to the left, and Z up.
|
||||
|
||||
3D visualization of the coordinate systems can be viewed using [rviz](rviz.md).
|
||||
|
||||
@@ -67,3 +67,5 @@ Change parameter `gcs_bridge` in the launch file:
|
||||
```
|
||||
|
||||
After opening the QGroundControl application, the connection should be established automatically.
|
||||
|
||||
**Next**: [Remote access using SSH](ssh.md)
|
||||
|
||||
15
docs/en/models.md
Normal file
15
docs/en/models.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Model files for parts
|
||||
|
||||
This page contains models and drawings of some of the drone parts. They can be used for 3D printing and/or laser cutting replacement parts.
|
||||
|
||||
## Clever 4
|
||||
|
||||
### Battery holder
|
||||
|
||||
File: [`battery_holder.stl`](https://github.com/CopterExpress/clever/raw/master/docs/assets/battery_holder.stl).
|
||||
|
||||
Filament: PLA/ABS/SBS.
|
||||
|
||||
Infill: 50% or more.
|
||||
|
||||
Description: the holder should be installed on the top deck. It allows the user to secure the battery with the battery strap and to mount your battery level indicator using a 3M pad.
|
||||
@@ -35,7 +35,7 @@ In manual mode the pilot controls the drone directly. GPS, computer vision data,
|
||||
* **ALTCTL** (ALTITUDE) — control of the altitude rate, pitch, roll and yaw angular velocity. Requires a barometer or another altitude source.
|
||||
* **POSCTL** (POSITION) — control of the altitude rate, forward/backward and right/left speed, and yaw angular velocity. It is the easiest flying mode. The barometer, GPS, computer vision, and other sensors are used.
|
||||
|
||||
### Auto flight modes
|
||||
### Auto flight modes {#auto}
|
||||
|
||||
In autonomous flight modes the quadcopter ignores the control signals from the transmitter and uses a program to fly.
|
||||
|
||||
|
||||
96
docs/en/programming.md
Normal file
96
docs/en/programming.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Programming
|
||||
|
||||
<img src="../assets/programming.png" width="250" align="right">
|
||||
|
||||
The Clever platform allows a [Raspberry Pi](raspberry.md) computer to be used for programming autonomous flights. The flight program is typically written using the Python programming language. The program may [receive telemetry data](simple_offboard.md#get_telemetry) (which includes battery data, attitude, position, and other parameters) and send commands like: [fly to a point in space](simple_offboard.md#navigate), [set attitude](simple_offboard.md#set_attitude), [set angular rates](simple_offboard.md#set_rates), and others.
|
||||
|
||||
The platform utilizes the [ROS framework](ros.md), which allows the user program to communicate with the Clever services that are running as a `clever` systemd daemon. The [MAVROS](mavros.md) package is used to interact with the flight controller.
|
||||
|
||||
PX4 uses [OFFBOARD mode](modes.md#auto) for autonomous flights. The Clever API can be used to transition the drone to this flight mode automatically. If you need to interrupt the autonomous flight, use your flight mode stick on your RC controller to transition to any other flight mode.
|
||||
|
||||
## Positioning system {#positioning}
|
||||
|
||||
A drone has to use a positioning system to be able to hover still or to fly from point to point. The system should compute the drone position and feed this data into the flight controller. Clever allows using multiple positioning systems, such as [optical flow](optical_flow.md) (requires a [camera](camera.md) and a [rangefinder](laser.md)), [fiducial markers](aruco.md) (requires a camera and markers), GPS and others.
|
||||
|
||||
### Optical flow
|
||||
|
||||
Optical flow is used to compute shifts between consecutive frames and to use this data to compute the drone shifting in space.
|
||||
|
||||
Read more in the [Optical Flow article](optical_flow.md).
|
||||
|
||||
### ArUco markers
|
||||
|
||||
Fiducial markers allow the drone to compute its position relative to these markers. This data may then be transferred to the flight controller.
|
||||
|
||||
Read more about [ArUco markers](aruco.md) in our articles about them.
|
||||
|
||||
### GPS (outdoor flight)
|
||||
|
||||
GPS allows you to specify global Earth coordinates (latitude and longitude). The [`navigate_global`](simple_offboard.md#navigate_global) function takes these as parameters instead of the usual cartesian coordinates.
|
||||
|
||||
Read more in the [GPS connection](gps.md) article.
|
||||
|
||||
## Autonomous flight {#flight}
|
||||
|
||||
After you've configured your positioning system, you can start writing programs for autonomous flights. Use the [SSH connection to the Raspberry Pi](ssh.md) to run your scripts. In order to run a Python script use the `python` command:
|
||||
|
||||
```bash
|
||||
python flight.py
|
||||
```
|
||||
|
||||
Below is a complete flight program that performs a takeoff, flies forward and lands:
|
||||
|
||||
```python
|
||||
#coding: utf8
|
||||
|
||||
import rospy
|
||||
from clever import srv
|
||||
from std_srvs.srv import Trigger
|
||||
|
||||
rospy.init_node('flight')
|
||||
|
||||
get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
|
||||
navigate = rospy.ServiceProxy('navigate', srv.Navigate)
|
||||
land = rospy.ServiceProxy('land', Trigger)
|
||||
|
||||
# Takeoff and hover 1 m above the ground
|
||||
navigate(x=0, y=0, z=1, frame_id='body', auto_arm=True)
|
||||
|
||||
# Wait for 3 seconds
|
||||
rospy.sleep(3)
|
||||
|
||||
# Fly forward 1 m
|
||||
navigate(x=1, y=0, z=0, frame_id='body')
|
||||
|
||||
# Wait for 3 seconds
|
||||
rospy.sleep(3)
|
||||
|
||||
# Perform landing
|
||||
land()
|
||||
```
|
||||
|
||||
> **Note** The `navigate` function call is not blocking; that is, the program will continue executing the next commands before the drone arrives at the set point. Look at the [`navigate_wait`](snippets.md#block-nav) snippet for a blocking function.
|
||||
|
||||
Note that only the first `navigate` call has its `auto_arm` parameter set to `True`. This parameter arms the drone and transitions it to the OFFBOARD flight mode.
|
||||
|
||||
The `frame_id` parameter specifies which frame of reference will be used for the target point:
|
||||
|
||||
* `body` is rigidly bound to the drone body;
|
||||
* `navigate_target` has its origin at the last target point for `navigate`;
|
||||
* `map` is the drone's local frame;
|
||||
* `aruco_map` is bound to the ArUco marker map;
|
||||
* `aruco_N` is bound to the marker with ID=N.
|
||||
|
||||
Read more in the [coordinate systems](frames.md) article.
|
||||
|
||||
You can also use the ["Autonomous flight"](simple_offboard.md) article as an API reference.
|
||||
|
||||
## Additional periphery
|
||||
|
||||
The Clever platform also exposes APIs for interacting with other peripherals. Read more in the following articles:
|
||||
|
||||
* [LED strip](leds.md);
|
||||
* [laser rangefinder](laser.md);
|
||||
* [GPIO](gpio.md);
|
||||
* [ultrasonic rangefinder](sonar.md);
|
||||
* [camera](camera.md).
|
||||
@@ -3,7 +3,9 @@ Raspberry Pi
|
||||
|
||||
**Raspberry Pi** is a single-board computer that fits in the palm, created on the basis of ARM mobile microprocessor. It features low energy consumption, and it can even run on solar panels. Raspberry Pi 3 is included in the kits for programmable quadcopters "Clever".
|
||||
|
||||
<img src="../assets/raspberry3.jpg" width="500">
|
||||
<img src="../assets/raspberry.png" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
|
||||
Technical specifications:
|
||||
|
||||
* Weight is 45 grams.
|
||||
* Clock rate is 1.2 GHz.
|
||||
@@ -12,19 +14,6 @@ Raspberry Pi
|
||||
* Four USB 2.0 ports.
|
||||
* An HDMI port.
|
||||
|
||||
The scope of Raspberry Pi computer application is quite wide, since after all it is quite a full-fledged computer. If you need a machine to solve simple problems that do not require too many resources in terms of calculations, you can safely connect your Raspberry Pi device to the standard PC elements: a monitor, a mouse, or a keyboard.
|
||||
Raspberry Pi is connected to the flight controller in the Clever kit and is used as a companion computer. It can be used to [connect to the drone over Wi-Fi](wifi.md), perform autonomous flights, access peripherals and much more.
|
||||
|
||||
The Raspberry Pi is a very popular platform where you can implement a variety of projects, such as:
|
||||
|
||||
* a home automation server (or a "smart house" system);
|
||||
* a data storage server (NAS);
|
||||
* a home media server;
|
||||
* a "think-tank" for automated machines or robots.
|
||||
|
||||
In fact, we will use it as the last in the list, due to its ability to connect to the Pixhawk autopilot.
|
||||
|
||||
See more:
|
||||
|
||||
* [RPi image](image.md)
|
||||
* [SSH access](ssh.md)
|
||||
* [Network setup](network.md)
|
||||
**Next**: [Raspberry Pi image](image.md)
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
# ROS Kinetic package installation and setup
|
||||
# ROS Melodic package installation and setup
|
||||
|
||||
In order to use tools such as rqt, rviz and others as well as running the simulator (SITL), you will need to install and setup ROS package
|
||||
|
||||
> **Hint** For more details on installation refer to [the main article](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
> **Hint** For more details on installation refer to [the main article](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
<!-- -->
|
||||
|
||||
> **Hint** If you are using Ubuntu 18.04, you will need to install ROS Melodic instead of ROS Kinetic. A complete guide of the installation is available [here](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
## ROS Kinetic installation on Ubuntu
|
||||
## ROS Melodic installation on Ubuntu
|
||||
|
||||
To find the correct package version, you will need to change the settings of your repositories. Go to "Software and updates" and enable `restricted`, `universe` and `multiverse`.
|
||||
|
||||
@@ -35,13 +31,13 @@ Now you can install the ROS package itself.
|
||||
+ If you plan to use ROS together with the simulator (also includes tools such as rqt, rviz and others):
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-desktop-full
|
||||
sudo apt-get install ros-melodic-desktop-full
|
||||
```
|
||||
|
||||
+ If you plan to use ROS exclusively for tools rqt, rviz etc.:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-desktop
|
||||
sudo apt-get install ros-melodic-desktop
|
||||
```
|
||||
|
||||
After the package has installed, initialize `rosdep`.
|
||||
@@ -55,12 +51,12 @@ rosdep update
|
||||
If you are not confortable with entering environment variables manually each time, you may configure it in a way that it add itself in your bash session on every new shell startup:
|
||||
|
||||
```bash
|
||||
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
|
||||
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
If you whish to install any additionnal packages for yout ROS Kinetic simply use:
|
||||
If you whish to install any additionnal packages for yout ROS Melodic simply use:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-PACKAGE
|
||||
sudo apt-get install ros-melodic-PACKAGE
|
||||
```
|
||||
|
||||
@@ -8,13 +8,13 @@ ROS is a widely used framework for developing complex and distributed robotic sy
|
||||
Installation
|
||||
---
|
||||
|
||||
Main article: http://wiki.ros.org/kinetic/Installation/Ubuntu
|
||||
Main article: http://wiki.ros.org/melodic/Installation/Ubuntu
|
||||
|
||||
ROS is already installed on [the RPi image](image.md).
|
||||
|
||||
To use ROS on a PC, we recommend using Ubuntu Linux (or a virtual machine such as Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) or [VirtualBox](https://www.virtualbox.org)).
|
||||
|
||||
> **Note** For ROS Kinetic distribution, we recommend using Ubuntu 16.04.
|
||||
> **Note** For ROS Melodic distribution, we recommend using Ubuntu 18.04.
|
||||
|
||||
Concepts
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ The [rviz] tool(http://wiki.ros.org/rviz) allows real-time visualization of all
|
||||
|
||||
To use rviz and rqt, a PC running Ubuntu Linux (or a virtual machine such as [Parallels Desktop Lite] (https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) or [VirtualBox] (https://www.virtualbox.org)) is required.
|
||||
|
||||
Install package `ros-kinetic-desktop-full` or `ros-kinetic-desktop` using the [installation documentation](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
Install package `ros-melodic-desktop-full` or `ros-melodic-desktop` using the [installation documentation](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
Start rviz
|
||||
---
|
||||
@@ -48,7 +48,7 @@ Axis or Grid configured to frame `aruco_map` will visualize the location [on the
|
||||
It is also recommended to install additional useful plugins for rviz [jsk_rviz_plugins](https://jsk-docs.readthedocs.io/en/latest/jsk_visualization/doc/jsk_rviz_plugins/index.html). This kit allows visualizing topics like `TwistStamped` (velocity) `CameraInfo`, `PolygonArray`, and many more. To install, use command:
|
||||
|
||||
```(bash)
|
||||
sudo apt-get install ros-kinetic-jsk-visualization
|
||||
sudo apt-get install ros-melodic-jsk-visualization
|
||||
```
|
||||
|
||||
Starting the rqt toolkit
|
||||
@@ -71,5 +71,5 @@ ROS_MASTER_URI=http://192.168.11.1:11311 rqt_image_view
|
||||
Brief description of useful rqt plugins:
|
||||
|
||||
* `rqt_image_view` – viewing images from topics like `sensor_msgs/Image`;
|
||||
* `rqt_multiplot` – Building charts from the data from of arbitrary topics (installation: `sudo apt-get install ros-kinetic-rqt-multiplot`);
|
||||
* `rqt_multiplot` – Building charts from the data from of arbitrary topics (installation: `sudo apt-get install ros-melodic-rqt-multiplot`);
|
||||
* Bag – working with [Bag-files](http://wiki.ros.org/rosbag).
|
||||
|
||||
@@ -21,7 +21,9 @@ Description of some checks:
|
||||
* Global position (GPS) — checks for presence of global position data (GPS module is required for this check);
|
||||
* Camera — checks for proper operation of the Raspberry camera.
|
||||
* ArUco — checks whether [ArUco](aruco.md) detection is working
|
||||
* VPE — checks whether VPE data is published
|
||||
* Rangefinder — checks whether [rangefinder](laser.md) data is published
|
||||
* VPE — checks whether VPE data is published.
|
||||
* Rangefinder — checks whether [rangefinder](laser.md) data is published.
|
||||
* RPi health – checks the [onboard computer](raspberrypi.md) status.
|
||||
* CPU usage – checks the CPU load of the onboard computer.
|
||||
|
||||
> **Caution** Pay attention on the checks marked with *WARN* sign. If necessary, contact [Copter Express technical support](tg://resolve?domain=COEXHelpdesk).
|
||||
|
||||
@@ -120,6 +120,7 @@ Transforming the position (`PoseStamped`) from one system of coordinates ([of fr
|
||||
```python
|
||||
import tf2_ros
|
||||
import tf2_geometry_msgs
|
||||
from geometry_msgs.msg import PoseStamped
|
||||
|
||||
tf_buffer = tf2_ros.Buffer()
|
||||
tf_listener = tf2_ros.TransformListener(tf_buffer)
|
||||
|
||||
@@ -124,7 +124,7 @@ Ultrasonic distance gage RCW-0001 is compatible with distance gage HC-SR04. Use
|
||||
An example of a flight program with the use of [simple_offboard](simple_offboard.md), which makes the copter fly forward until the connected ultrasonic distance gage detects an obstacle:
|
||||
|
||||
```python
|
||||
set_velocity(x=0.5, frame_id='body', auto_arm=True) # flying forward at the velocity of 0.5 mps
|
||||
set_velocity(vx=0.5, frame_id='body', auto_arm=True) # flying forward at the velocity of 0.5 mps
|
||||
|
||||
while True:
|
||||
if read_distance_filtered() < 1:
|
||||
|
||||
@@ -25,3 +25,5 @@ Web access
|
||||
Starting with version 0.11.4 [of the image](image.md), access to the shell is also available via a web browser (using [Butterfly](https://github.com/paradoxxxzero/butterfly)). To gain access, open web page http://192.168.11.1, and select link *Open web terminal*:
|
||||
|
||||
<img src="../assets/butterfly.png">
|
||||
|
||||
**Next**: [Command-line interface](cli.md)
|
||||
|
||||
@@ -36,7 +36,7 @@ Parameters `width`, `height`, etc. re also available. Read more about `web_video
|
||||
|
||||
## Browse with rqt_image_view
|
||||
|
||||
To browse images with the rqt tools the user needs a computer with Ubuntu 16.04 и [ROS Kinetic](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
To browse images with the rqt tools the user needs a computer with Ubuntu 18.04 and [ROS Melodic](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
[Connect to the Clever Wi-Fi network](wifi.md) an run `rqt_image_view` with its IP-address:
|
||||
|
||||
|
||||
@@ -15,4 +15,4 @@ After connecting to Clever Wi-Fi, open http://192.168.11.1 in you web browser. I
|
||||
|
||||
<img src="../assets/web.png" alt="Веб-интерфейс Клевера" class="zoom">
|
||||
|
||||
**Next**: [Using QGroundControl via Wi-Fi](gcs_bridge.md).
|
||||
**Next**: [Connecting Raspberry Pi to the flight controller](connection.md).
|
||||
|
||||
@@ -20,21 +20,20 @@
|
||||
* [Подключение к Pixracer](connection.md)
|
||||
* [QGroundControl по Wi-Fi](gcs_bridge.md)
|
||||
* [SSH-доступ](ssh.md)
|
||||
* [Редактирование файлов](editing.md)
|
||||
* [Командная строка](cli.md)
|
||||
* [Автоматическая проверка](selfcheck.md)
|
||||
* [Просмотр видеострима с камер](web_video_server.md)
|
||||
* Программирование
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.md)
|
||||
* [Общая информация](programming.md)
|
||||
* [Ориентация камеры](camera_frame.md)
|
||||
* [Системы координат](frames.md)
|
||||
* [Автономный полет в OFFBOARD](simple_offboard.md)
|
||||
* [Примеры кода](snippets.md)
|
||||
* Визуальные маркеры (ArUco)
|
||||
* [Общая информация](aruco.md)
|
||||
* [Распознавание маркеров](aruco_marker.md)
|
||||
* [Навигация по карте маркеров](aruco_map.md)
|
||||
* [Навигация по Optical Flow](optical_flow.md)
|
||||
* [Автономный полет в OFFBOARD](simple_offboard.md)
|
||||
* [Системы координат](frames.md)
|
||||
* [Примеры кода](snippets.md)
|
||||
* [Лазерный дальномер](laser.md)
|
||||
* [Светодиодная лента](leds.md)
|
||||
* [Работа с GPIO](gpio.md)
|
||||
@@ -42,15 +41,17 @@
|
||||
* [Компьютерное зрение](camera.md)
|
||||
* [Визуализация с помощью rviz](rviz.md)
|
||||
* [Автозапуск ПО](autolaunch.md)
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.md)
|
||||
* Дополнительные материалы
|
||||
* [COEX Pix](coex_pix.md)
|
||||
* [Гид по автономному полету](auto_setup.md)
|
||||
* [Имя хоста](hostname.md)
|
||||
* [Симулятор](sitl.md)
|
||||
* [Настройка PID](pid_tuning.md)
|
||||
* [STL-модели Клевера](models.md)
|
||||
* [CAD-модели Клевера](models.md)
|
||||
* [Docker-контейнер с симулятором](sitl_docker.md)
|
||||
* [Установка ROS Kinetic](ros-install.md)
|
||||
* [Установка ROS Melodic](ros-install.md)
|
||||
* [Пилотирование со смартфона](rc.md)
|
||||
* [Настройка сети RPi](network.md)
|
||||
* [Интерфейс UART](uart.md)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
- Если необходимо, можно поменять название и пароль сети. См. статью "[Настройка сети](network.md#изменение-пароля-или-ssid-имени-сети)". Остальные операции с сетью производить не нужно.
|
||||
|
||||
- Для редактирования файлов пользуйтесь редактором nano. [Инструкция по работе с редактором](editing.md).
|
||||
- Для редактирования файлов пользуйтесь редактором nano. [Инструкция по работе с редактором](cli.md#editing).
|
||||
|
||||
> **Hint** В редакторе перемещать курсор можно только стрелками на клавиатуре.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
Для корректной работы всех модулей, связанных с компьютерным зрением (в том числе [полет по ArUco-маркерам](aruco.md) и [Optical Flow](optical_flow.md)) необходимо корректно выставленная ориентация основной камеры Клевера.
|
||||
|
||||
Расположение и ориентация камеры [задается в файле](editing.md) `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
Расположение и ориентация камеры [задается в файле](cli.md#editing) `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0 0 -0.07 -1.5707963 0 3.1415926 base_link main_camera_optical"/>
|
||||
|
||||
80
docs/ru/cli.md
Normal file
80
docs/ru/cli.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Командная строка
|
||||
|
||||
В Linux-системах, к семейству которых принадлежит используемая на Raspberry Pi ОС Raspbian, основным способом взаимодействия пользователя с системой является командная строка. Для работы с командной строкой [откройте SSH-соединение](ssh.md) с Raspberry Pi.
|
||||
|
||||
## Базовые команды
|
||||
|
||||
> **Hint** Двойное нажатие клавиши `Tab ↹` позволяет автоматически дополнить вводимую команду или аргумент.
|
||||
|
||||
Показать содержимое текущей директории:
|
||||
|
||||
```bash
|
||||
ls
|
||||
```
|
||||
|
||||
Перейти в директорию:
|
||||
|
||||
```bash
|
||||
cd catkin_ws/src/clever/clever/launch/
|
||||
```
|
||||
|
||||
Перейти на директорию выше:
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
```
|
||||
|
||||
Вывести путь к текущей директории:
|
||||
|
||||
```bash
|
||||
pwd
|
||||
```
|
||||
|
||||
Вывести содержимое файла `file.py`:
|
||||
|
||||
```bash
|
||||
cat file.py
|
||||
```
|
||||
|
||||
Запустить Python-скрипт `file.py`:
|
||||
|
||||
```bash
|
||||
python file.py
|
||||
```
|
||||
|
||||
Перезагрузить Raspberry Pi:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Для завершения работающей программы нажмите комбинацию клавиш `Ctrl`+`C`.
|
||||
|
||||
Читайте больше о командах Linux в документации Raspberry Pi: https://www.raspberrypi.org/documentation/linux/usage/commands.md.
|
||||
|
||||
## Редактирование файлов {#editing}
|
||||
|
||||
Используйте редактор **nano** для того, чтобы создавать или редактировать файлы на Raspberry Pi. Среди текстовых редакторов, доступных в терминале, он является наиболее простым и интуитивным.
|
||||
|
||||
1. Для редактирования файла введите команду:
|
||||
|
||||
```bash
|
||||
nano путь/к/файлу
|
||||
```
|
||||
|
||||
Например:
|
||||
|
||||
```bash
|
||||
nano ~/catkin_ws/src/clever/clever/launch/clever.launch
|
||||
```
|
||||
|
||||
<img src="../assets/nano.png" alt="Редактирование файла в nano" data-action="zoom">
|
||||
2. Отредактируйте файл.
|
||||
3. Для выхода с сохранением нажмите `Ctrl`+`X`, `Y`, `Enter`.
|
||||
4. При изменении .launch-файлов необходимо перезапустить пакет `clever`:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Для редактирования файлов также можно использовать и другие редакторы, например, **vim**.
|
||||
@@ -1,56 +1,46 @@
|
||||
Подключение Pixhawk/Pixracer к Raspberry Pi
|
||||
===
|
||||
# Подключение Raspberry Pi к полетному контроллеру
|
||||
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с Pixhawk (Pixracer) по Wi-Fi](gcs_bridge.md), использования [телефонного пульта](rc.md) и других функций необходимо подсоединить Raspberry Pi к Pixhawk (Pixracer).
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с Pixhawk (Pixracer) по Wi-Fi](gcs_bridge.md), использования [телефонного пульта](rc.md) и других функций необходимо соединение Raspberry Pi и полетного контроллера.
|
||||
|
||||
Убедиться в работоспособности подключения, [выполнив на Raspberry Pi](ssh.md):
|
||||
## Подключение по USB
|
||||
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
Основным способом подключения является подключение по интерфейсу USB.
|
||||
|
||||
Поле `connected` должно содержать значение `True`.
|
||||
1. Соедините Raspberry Pi и полетный контроллер micro-USB to USB кабелем.
|
||||
2. [Подключитесь в Raspberry Pi по SSH](ssh.md).
|
||||
3. Убедитесь в работоспособности подключения, [выполнив на Raspberry Pi](ssh.md):
|
||||
|
||||
Подключение по USB
|
||||
---
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
|
||||
Соедините Pixhawk/Pixracer и Raspberry Pi micro-USB to USB кабелем.
|
||||
|
||||
Необходимо убедиться, что в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) тип подключения установлен на USB:
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="usb"/>
|
||||
```
|
||||
|
||||
При изменении launch-файла необходимо перезапустить пакет `clever`:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
Поле `connected` должно содержать значение `True`.
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по USB необходимо установить значение [параметра](px4_parameters.md) `CBRK_USB_CHK` на 197848.
|
||||
|
||||
Подключение по UART
|
||||
---
|
||||
## Подключение по UART
|
||||
|
||||
TODO схема подключения
|
||||
<!-- TODO схема подключения -->
|
||||
|
||||
Необходимо убедиться, что в launch-файле Клевера (`~/catkin_ws/src/clever/clever/clever.launch`) тип подключения установлен на UART:
|
||||
Дополнительным способом подключения является подключение подключение по интерйсу UART.
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
1. Подключите Raspberry Pi к полетному контроллеру по UART.
|
||||
2. [Подключитесь в Raspberry Pi по SSH](ssh.md).
|
||||
3. Поменяйте в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) тип подключения на UART:
|
||||
|
||||
При изменении launch-файла необходимо перезапустить пакет `clever`:
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
При изменении launch-файла необходимо перезапустить пакет `clever`:
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Подключение к SITL
|
||||
---
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и полетного контроллера по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
|
||||
## Подключение к SITL
|
||||
|
||||
Для того, чтобы подсоединиться к локально/удаленно запущенному [SITL](sitl.md), необходимо установить аргумент `fcu_conn` в `udp`, и `fcu_ip` в IP-адрес машины, где запущен SITL (`127.0.0.1` для локального):
|
||||
|
||||
@@ -58,3 +48,5 @@ sudo systemctl restart clever
|
||||
<arg name="fcu_conn" default="udp"/>
|
||||
<arg name="fcu_ip" default="127.0.0.1"/>
|
||||
```
|
||||
|
||||
**Далее**: [Подключение QGroundControl по Wi-Fi](gcs_bridge.md).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Copter Hack 2019
|
||||
|
||||
Хакатон [Copter Hack 2019](https://copterexpress.timepad.ru/event/768108/) проходит 11–13 октября в Технополисе "Москва".
|
||||
Хакатон [Copter Hack 2019](https://copterexpress.timepad.ru/event/1017592/) проходит 11–13 октября в Технополисе "Москва".
|
||||
|
||||
Официальный сайт: https://ru.coex.tech/copterhack.
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# Редактирование файлов
|
||||
|
||||
Используйте редактор **nano** для того, чтобы редактировать файлы на Raspberry Pi. Среди текстовых редакторов, доступных в терминале, он является наиболее простым и интуитивным.
|
||||
|
||||
1. [Откройте SSH-соединение](ssh.md) с Raspberry Pi любым из способов.
|
||||
2. Для редактирования файла введите команду:
|
||||
|
||||
```bash
|
||||
nano путь/к/файлу
|
||||
```
|
||||
|
||||
Например:
|
||||
|
||||
```bash
|
||||
nano ~/catkin_ws/src/clever/clever/launch/clever.launch
|
||||
```
|
||||
|
||||
<img src="../assets/nano.png" alt="Редактирование файла в nano" data-action="zoom">
|
||||
3. Отредактируйте файл.
|
||||
4. Для выхода с сохранением нажмите *Ctrl+X*, *y*, *Enter*.
|
||||
5. При изменении .launch-файлов необходимо перезапустить пакет `clever`:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Для редактирования файлов также можно использовать и другие редакторы, например, **vim**.
|
||||
@@ -12,6 +12,11 @@
|
||||
* `body` — координаты относительно квадрокоптера без учета наклонов по тангажу и крену: красная, синяя и зеленая линии на иллюстрации;
|
||||
* `navigate_target` – координаты точки, в которую сейчас летит дрон (с использованием [navigate](simple_offboard.md#navigate)).
|
||||
|
||||
При использовании [системы позиционирования по ArUco-маркерам](aruco.md) появляются дополнительные фреймы:
|
||||
|
||||
* `aruco_map` – координаты относительно [карты ArUco-маркеров](aruco_map.md);
|
||||
* `aruco_N` – координаты относительно [маркера](aruco.md) с ID=N.
|
||||
|
||||
> **Hint** В соответствии с [соглашением](http://www.ros.org/reps/rep-0103.html), для фреймов, связанных с коптером, ось X направлена вперед, Y – налево и Z – вверх.
|
||||
|
||||
Более наглядно 3D визуализацию систем координат можно наблюдать, используя [rviz](rviz.md).
|
||||
|
||||
@@ -48,3 +48,5 @@ sudo systemctl restart clever
|
||||
|
||||
1. Измените параметр `gcs_bridge` на `udp-pb`.
|
||||
2. При открытии программы QGroundControl соединение должно установиться автоматически.
|
||||
|
||||
**Далее**: [Доступ по SSH](ssh.md).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# STL-модели
|
||||
# CAD-модели
|
||||
|
||||
На этой странице представлены STL-модели некоторых деталей квадрокоптеров Клевер.
|
||||
На этой странице представлены CAD-модели некоторых деталей квадрокоптеров Клевер.
|
||||
|
||||
## Клевер 4
|
||||
|
||||
@@ -13,3 +13,20 @@
|
||||
Заполнение: не менее 50%.
|
||||
|
||||
Функция: устанавливается на деталь "дека монтажная", после чего позволяет надежно фиксировать АКБ с помощью ремешка. Также имеется возможность установки индикатора напряжения (с помощью 3М-скотча).
|
||||
|
||||
## Клевер 3
|
||||
|
||||
### Лазерная резка
|
||||
|
||||
* Ножка (вариант с захватом) – [`big_leg.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/big_leg.dxf).
|
||||
* Дека монтажная – [`deck.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/deck.dxf).
|
||||
* Дуга – [`prop_guard.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/prop_guard.dxf).
|
||||
* Рогатка+ушко – [`prop_guard_mount.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/prop_guard_mount.dxf).
|
||||
* Проставка – [`grab_spacer.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/grab_spacer.dxf).
|
||||
* Ножка – [`leg.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/leg.dxf).
|
||||
* Обруч (LED) – [`led_mount_plate.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/led_mount_plate.dxf).
|
||||
|
||||
### Фрезеровка
|
||||
|
||||
* Дека центральная – [`central_plate.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/central_plate.dxf).
|
||||
* Луч – [`arm.dxf`](https://github.com/CopterExpress/clever/raw/master/docs/assets/dxf/arm.dxf).
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
* **ALTCTL** (*Altitude*) — управление скоростью изменения высоты полета, углами по тангажу и крену и угловой скоростью по рысканью. Используется барометр (или иной датчик высоты).
|
||||
* **POSCTL** (*Position*) — управление скоростями набора высоты, скоростью движения вперед/назад и вправо/влево, угловой скоростью по рысканью. Наиболее простой для полетов режим. Используется барометр, GPS, компьютерное зрение, другие датчики.
|
||||
|
||||
### Автоматический полет
|
||||
### Автоматический полет {#auto}
|
||||
|
||||
В этих режимах квадрокоптер игнорирует сигналы с пульта и летает по какой-либо автоматической программе.
|
||||
|
||||
|
||||
96
docs/ru/programming.md
Normal file
96
docs/ru/programming.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Программирование
|
||||
|
||||
<img src="../assets/programming.png" width=250 align=right>
|
||||
|
||||
Платформа Клевера позволяет использовать [Raspberry Pi](raspberry.md) для того, чтобы запрограммировать автономный полет дрона. Чаще всего программа для автономного полета пишется на языке Python. Программа может [получать телеметрию](simple_offboard.md#get_telemetry) (заряд батареи, ориентацию, расположение и т. д.) и отправлять команды: [полететь в точку](simple_offboard.md#navigate), [установить ориентацию](simple_offboard.md#set_attitude), [угловую скорость](simple_offboard.md#set_rates) и т. д.
|
||||
|
||||
Платформа основывается на [фреймворке ROS](ros.md), который обеспечивает связь между пользовательской программой и сервисами Клевера, которые запущены в фоне в виде systemd-демона `clever`. Для связи с полетным контроллером используется пакет [MAVROS](mavros.md).
|
||||
|
||||
Для автономного полета в PX4 используется [режим OFFBOARD](modes.md#auto). API Клевера переводит дрон в этом режим автоматически. В случае необходимости прерывания автономного полета, необходимо перевести дрон в любой другой режим, используя стик переключения режимов на пульте.
|
||||
|
||||
## Система позиционирования {#positioning}
|
||||
|
||||
Для того, чтобы дрон мог зависать на месте или летать между точками, необходимо использование система позиционирования. Такая система должна вычислять и сообщать дрону, где он находится. Клевер предполагает использование нескольких систем позиционирования: [optical flow](optical_flow.md) (используется [камера](camera.md) и [лазерный дальномер](laser.md)), [визуальные маркеры](aruco.md) (используется камера и маркеры, наклеенные на пол или потолок), GPS и других.
|
||||
|
||||
### Optical flow
|
||||
|
||||
Принцип работы optical flow основан на вычислении сдвигов между соседними кадрами с камеры и передачи этой информации в полетный контроллер для дальнейшего расчета смещения дрона относительно изначальной точки.
|
||||
|
||||
Для настройки этой системы позиционирования обращайтесь к [соответствующей статье](optical_flow.md).
|
||||
|
||||
### ArUco-маркеры
|
||||
|
||||
Технология визуальных маркеров позволяет рассчитать позицию дрона относительно распознанных маркеров и передать эту информацию в полетный контроллер.
|
||||
|
||||
Читайте [цикл статей про ArUco-маркеры](aruco.md) для получения подробностей.
|
||||
|
||||
### GPS (уличный полет)
|
||||
|
||||
Использование GPS позволяет также использовать для навигации глобальные координаты – широту и долготу (функция [`navigate_global`](simple_offboard.md#navigate_global)).
|
||||
|
||||
Основная статья: [подключение GPS](gps.md).
|
||||
|
||||
## Автономный полет {#flight}
|
||||
|
||||
После настройки системы позиционирования становится возможным написание скриптов для автономных полетов. Для выполнения скриптов [подключитесь в Raspberry Pi по SSH](ssh.md). Для того, чтобы запустить Python-скрипт, используйте команду `python`:
|
||||
|
||||
```bash
|
||||
python flight.py
|
||||
```
|
||||
|
||||
Пример программы для полета (взлет, пролет вперед, посадка):
|
||||
|
||||
```python
|
||||
# coding: utf8
|
||||
|
||||
import rospy
|
||||
from clever import srv
|
||||
from std_srvs.srv import Trigger
|
||||
|
||||
rospy.init_node('flight')
|
||||
|
||||
get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
|
||||
navigate = rospy.ServiceProxy('navigate', srv.Navigate)
|
||||
land = rospy.ServiceProxy('land', Trigger)
|
||||
|
||||
# Взлет на высоту 1 м
|
||||
navigate(x=0, y=0, z=1, frame_id='body', auto_arm=True)
|
||||
|
||||
# Ожидание 3 секунды
|
||||
rospy.sleep(3)
|
||||
|
||||
# Пролет вперед 1 метр
|
||||
navigate(x=1, y=0, z=0, frame_id='body')
|
||||
|
||||
# Ожидание 3 секунды
|
||||
rospy.sleep(3)
|
||||
|
||||
# Посадка
|
||||
land()
|
||||
```
|
||||
|
||||
> **note** Функция navigate не ожидает, пока дрон долетит до целевой точки; скрипт продолжит выполнение сразу. Для блокирующей версии смотрите пример функции [`navigate_wait`](snippets.md#block-nav).
|
||||
|
||||
Обратите внимание, что параметр `auto_arm` установлен на `True` только у первого вызова функции `navigate`. Этот параметр армит дрон и переводит его в режим автономного полета (OFFBOARD).
|
||||
|
||||
Параметр `frame_id` задает систему координат, относительно которой задаются целевая точка для полета дрона:
|
||||
|
||||
* `body` связана с корпусом дрона;
|
||||
* `navigate_target` связана с предыдущей целевой точкой полета;
|
||||
* `map` связана с локальной системой координат дрона;
|
||||
* `aruco_map` связана с картой ArUco-маркеров;
|
||||
* `aruco_N` связана ArUco-маркером с ID=N.
|
||||
|
||||
Подробности описаны в статье "[Системы координат](frames.md)".
|
||||
|
||||
Полное описания API Клевера приведено в статье ["Автономный полет"](simple_offboard.md).
|
||||
|
||||
## Дополнительное оборудование
|
||||
|
||||
Платформа Клевера также имеет API для работы с периферией. Читайте соответствующие статьи для подробностей:
|
||||
|
||||
* [работа со светодиодной лентой](leds.md);
|
||||
* [лазерный дальномер](laser.md);
|
||||
* [GPIO](gpio.md);
|
||||
* [ультразвуковой дальномер](sonar.md);
|
||||
* [камера](camera.md).
|
||||
@@ -3,7 +3,9 @@ Raspberry Pi
|
||||
|
||||
**Raspberry Pi** – это свободно помещающийся на ладони одноплатный компьютер, созданный на базе мобильного микропроцессора ARM. Он обладает низким энергопотреблением и может работать даже от солнечных батарей. Raspberry Pi входит в комплекты программируемого квадрокоптера Клевер.
|
||||
|
||||
<img src="../assets/raspberry3.jpg" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
<img src="../assets/raspberry.png" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
|
||||
Технические характеристики:
|
||||
|
||||
* Вес – 45 грамм.
|
||||
* Тактовая частота 1.2 ГГц.
|
||||
@@ -12,15 +14,6 @@ Raspberry Pi
|
||||
* 4 порта USB 2.0.
|
||||
* HDMI-порт.
|
||||
|
||||
Сферы применения компьютера Raspberry Pi достаточно широки, ведь это всё-таки вполне полноценный компьютер. Если вам нужна машина для решения несложных задач, которые не требуют применения мощных ресурсов в плане вычисления, то вы смело можете подключать к устройству Raspberry Pi стандартные элементы компьютера: монитор; мышь; клавиатуру.
|
||||
|
||||
Raspberry Pi – очень популярная платформа, на которой можно реализовать множество проектов, таких как:
|
||||
|
||||
* сервер домашней автоматизации (или система «умный дом»);
|
||||
* сервер хранения данных (NAS);
|
||||
* домашний медиа-сервер;
|
||||
* «мозговой центр» для автоматизированных станков или роботов.
|
||||
|
||||
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту Pixhawk.
|
||||
В Клевере Raspberry Pi подключается к полетному контроллеру и используется как вспомогательный компьютер. Он позволяет [подключаться к дрону по Wi-Fi](wifi.md), программировать автономные полеты, работать с периферией и многое другое.
|
||||
|
||||
**Далее**: [образ для Raspberry Pi](image.md).
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
# Установка и настройка пакета ROS Kinetic
|
||||
# Установка и настройка пакета ROS Melodic
|
||||
|
||||
Для работы с такими инструментами как: rqt, rviz и т. д., а также для запуска симулятора (SITL) вам потребуется установленный и настроенный пакет ROS.
|
||||
|
||||
> **Hint** Более подробную инструкцию по установке смотрите в [основной статье](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
> **Hint** Более подробную инструкцию по установке смотрите в [основной статье](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
<!-- -->
|
||||
|
||||
> **Hint** В случае, если вы используете Ubuntu версии 18.04, вместо ROS Kinetic вам нужно будет установить ROS Melodic. Полную инструкцию по установке вы можете найти [здесь](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
## Установка ROS Kinetic на Ubuntu
|
||||
## Установка ROS Melodic на Ubuntu
|
||||
|
||||
Для того, чтобы загрузить и установить правильную версию пакета требуется сделать настройки репозиториев, для этого откройте "Программы и обновления" и разрешите `restricted`, `universe` и `multiverse`.
|
||||
|
||||
@@ -35,13 +31,13 @@ sudo apt-get update
|
||||
+ Если вы планируете использовать ROS вместе с симуляцией (также содержит инструменты: rqt, rviz и т. д):
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-desktop-full
|
||||
sudo apt-get install ros-melodic-desktop-full
|
||||
```
|
||||
|
||||
+ Если вы планируете использовать ROS исключительно работать с инструментами rqt, rviz и т. д:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-desktop
|
||||
sudo apt-get install ros-melodic-desktop
|
||||
```
|
||||
|
||||
После установки пакета вам нужно инициализировать `rosdep`.
|
||||
@@ -55,12 +51,12 @@ rosdep update
|
||||
Если вам не удобно запускать переменное окружение вручную каждый раз, вы можете настроить его так, чтобы оно добавлялось в ваш сеанс bash при каждом запуске новой оболочки:
|
||||
|
||||
```bash
|
||||
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
|
||||
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
Если вы хотите установить какие-либо дополнительные пакеты для вашего ROS Kinetic просто используйте:
|
||||
Если вы хотите установить какие-либо дополнительные пакеты для вашего ROS Melodic просто используйте:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-PACKAGE
|
||||
sudo apt-get install ros-melodic-PACKAGE
|
||||
```
|
||||
|
||||
@@ -8,13 +8,13 @@ ROS – это широко используемый фреймворк для
|
||||
Установка
|
||||
---
|
||||
|
||||
Основная статья: http://wiki.ros.org/kinetic/Installation/Ubuntu
|
||||
Основная статья: http://wiki.ros.org/melodic/Installation/Ubuntu
|
||||
|
||||
ROS уже установлен на [образе для RPi](image.md).
|
||||
|
||||
Для использования ROS на компьютере рекомендуется ОС Ubuntu Linux (либо виртуальная машина, например [Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) или [VirtualBox](https://www.virtualbox.org)).
|
||||
|
||||
> **Note** Для дистрибутива ROS Kinetic рекомендуется Ubuntu версии 16.04.
|
||||
> **Note** Для дистрибутива ROS Melodic рекомендуется Ubuntu версии 18.04.
|
||||
|
||||
Концепции
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
Для использования rviz и rqt необходим компьютер с ОС Ubuntu Linux (либо виртуальная машина, например [Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) или [VirtualBox](https://www.virtualbox.org)).
|
||||
|
||||
На него необходимо установить пакет `ros-kinetic-desktop-full` или `ros-kinetic-desktop`, используя [документацию по установке](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
На него необходимо установить пакет `ros-melodic-desktop-full` или `ros-melodic-desktop`, используя [документацию по установке](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
Запуск rviz
|
||||
---
|
||||
@@ -48,7 +48,7 @@ Axis или Grid настроенный на фрейм `aruco_map` будут
|
||||
Рекомендуется также установка набора дополнительных полезных плагинов для rviz [jsk_rviz_plugins](https://jsk-docs.readthedocs.io/en/latest/jsk_visualization/doc/jsk_rviz_plugins/index.html). Это набор позволяет визуализировать топики типа `TwistStamped` (скорость), `CameraInfo`, `PolygonArray` и многое другое. Для установки используйте команду:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-jsk-visualization
|
||||
sudo apt-get install ros-melodic-jsk-visualization
|
||||
```
|
||||
|
||||
Запуск инструментов rqt
|
||||
@@ -71,5 +71,5 @@ ROS_MASTER_URI=http://192.168.11.1:11311 rqt_image_view
|
||||
Краткое описание полезных rqt-плагинов:
|
||||
|
||||
* `rqt_image_view` – просмотр изображений из топиков типа `sensor_msgs/Image`;
|
||||
* `rqt_multiplot` – построение графиков по данным из произвольным топиков (установка: `sudo apt-get install ros-kinetic-rqt-multiplot`);
|
||||
* `rqt_multiplot` – построение графиков по данным из произвольным топиков (установка: `sudo apt-get install ros-melodic-rqt-multiplot`);
|
||||
* Bag – работа с [Bag-файлами](http://wiki.ros.org/rosbag).
|
||||
|
||||
@@ -21,5 +21,7 @@ rosrun clever selfcheck.py
|
||||
* ArUco – проверка работы [распознавания ArUco-маркеров](aruco.md).
|
||||
* VPE – проверка правильности работы VPE.
|
||||
* Rangefinder – проверка работы [дальномера](laser.md).
|
||||
* RPi health – проверка состояния [бортового компьютера](raspberrypi.md).
|
||||
* CPU usage – проверка загруженности процессора бортового компьютера.
|
||||
|
||||
> **Caution** Обращайте пристальное внимание на предупреждения, отмеченные строкой *WARN*. При необходимости, обращайтесь в [Техподдержку Copter Express](tg://resolve?domain=COEXHelpdesk).
|
||||
|
||||
@@ -77,22 +77,22 @@ roslaunch mavros px4.launch fcu_url:=udp://@127.0.0.1:14557
|
||||
|
||||
Для того, чтобы запустить симулятор полета дрона, Gazebo или jMAVSim вам потребуется сделать соответственные настройки вашей среды.
|
||||
|
||||
> **Caution** Среда `ROS Kinetic` в изначально ориентированна для `Ubuntu (Xenial)` версии 16.04, по этому актуальность данной инструкции гарантируется только для соответственной версии операционной системы.
|
||||
> **Caution** Среда `ROS Melodic` изначально ориентированна для Ubuntu версии 18.04 (Bionic), поэтому актуальность данной инструкции гарантируется только для данной версии операционной системы.
|
||||
|
||||
В первую очередь вам потребуется установить полный пакет ROS Kinetic desktop-full, инструкцию по установке вы можете найти в [статье по установке ROS](ros-install.md).
|
||||
В первую очередь вам потребуется установить полный пакет ROS Melodic desktop-full, инструкцию по установке вы можете найти в [статье по установке ROS](ros-install.md).
|
||||
|
||||
После того, как вы выполнили указанные выше инструкции, вам нужно проверить, есть ли в вашем пакете `ROS` все нужные пакеты.
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-gazebo-ros \
|
||||
ros-kinetic-gazebo-dev \
|
||||
ros-kinetic-gazebo-plugins \
|
||||
ros-kinetic-gazebo-ros-pkgs \
|
||||
ros-kinetic-gazebo-msgs \
|
||||
ros-kinetic-geographic-msgs
|
||||
sudo apt-get install ros-melodic-gazebo-ros \
|
||||
ros-melodic-gazebo-dev \
|
||||
ros-melodic-gazebo-plugins \
|
||||
ros-melodic-gazebo-ros-pkgs \
|
||||
ros-melodic-gazebo-msgs \
|
||||
ros-melodic-geographic-msgs
|
||||
```
|
||||
|
||||
Чтобы избежать ошибок во время запуска симулятора, вам нужно будет установить Gazebo v7.14, для этого подключите необходимый репозиторий и добавьте соответствующие ключи:
|
||||
Чтобы избежать ошибок во время запуска симулятора, вам нужно будет установить Gazebo v9.11, для этого подключите необходимый репозиторий и добавьте соответствующие ключи:
|
||||
|
||||
```bash
|
||||
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
|
||||
|
||||
@@ -164,6 +164,7 @@ arming(False) # дизарм
|
||||
```python
|
||||
import tf2_ros
|
||||
import tf2_geometry_msgs
|
||||
from geometry_msgs.msg import PoseStamped
|
||||
|
||||
tf_buffer = tf2_ros.Buffer()
|
||||
tf_listener = tf2_ros.TransformListener(tf_buffer)
|
||||
|
||||
@@ -124,7 +124,7 @@ while True:
|
||||
Пример полетной программы с использованием [simple_offboard](simple_offboard.md), которая заставляет коптер лететь вперед, пока подключенный ультразвуковой дальномер не задетектирует препятствие:
|
||||
|
||||
```python
|
||||
set_velocity(x=0.5, frame_id='body', auto_arm=True) # полет вперед со скоростью 0.5 мс
|
||||
set_velocity(vx=0.5, frame_id='body', auto_arm=True) # полет вперед со скоростью 0.5 мс
|
||||
|
||||
while True:
|
||||
if read_distance_filtered() < 1:
|
||||
|
||||
@@ -21,3 +21,5 @@ ssh pi@192.168.11.1
|
||||
Начиная с версии 0.11.4 [образа](image.md) доступ к шеллу также доступен через веб-браузер (с использованием [Butterfly](https://github.com/paradoxxxzero/butterfly)). Для доступа откройте страницу http://192.168.11.1 и выберите на ней ссылку *Open web terminal*:
|
||||
|
||||
<img src="../assets/butterfly.png">
|
||||
|
||||
**Далее**: [Командная строка](cli.md).
|
||||
|
||||
@@ -36,7 +36,7 @@ http://192.168.11.1:8080/stream_viewer?topic=/main_camera/image_raw&type=mjpeg&q
|
||||
|
||||
## Просмотр через rqt_image_view
|
||||
|
||||
Для просмотра изображений через инструменты rqt необходим компьютер с установленной Ubuntu 16.04 и [ROS Kinetic](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
Для просмотра изображений через инструменты rqt необходим компьютер с установленной Ubuntu 18.04 и [ROS Melodic](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
[Подключитесь к Wi-Fi сети Клевера](wifi.md) и запустите `rqt_image_view` с указанием его IP-адреса:
|
||||
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
|
||||
<img src="../assets/web.png" alt="Веб-интерфейс Клевера" class="zoom">
|
||||
|
||||
**Далее**: [Подключение QGroundControl по Wi-Fi](gcs_bridge.md).
|
||||
**Далее**: [Подключение Raspberry Pi к полетному контроллеру](connection.md).
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
{ "from": "laser/", "to": "ru/laser.html" },
|
||||
{ "from": "led/", "to": "ru/leds.html" },
|
||||
{ "from": "leds/", "to": "ru/leds.html" },
|
||||
{ "from": "hostname/", "to": "ru/hostname.html" },
|
||||
|
||||
{ "from": "ru/microsd_images.html", "to": "ru/image.html" },
|
||||
{ "from": "en/microsd_images.html", "to": "en/image.html" }
|
||||
|
||||
Reference in New Issue
Block a user