mirror of
https://github.com/CopterExpress/clover.git
synced 2026-06-02 07:59:32 +00:00
Compare commits
39 Commits
v0.19-rc.2
...
v0.19-alph
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ae0da18b9 | ||
|
|
586442560e | ||
|
|
9ff7e4a64d | ||
|
|
b5ff8388b2 | ||
|
|
e3fc40f2b7 | ||
|
|
3640f09d82 | ||
|
|
31c6944b52 | ||
|
|
70684d952f | ||
|
|
6457dffb73 | ||
|
|
7b0b3c751b | ||
|
|
d833151963 | ||
|
|
25fe4397ee | ||
|
|
35ac2396f0 | ||
|
|
99f305cdd2 | ||
|
|
a0b67f51c3 | ||
|
|
915fbdfcc0 | ||
|
|
239eaf715d | ||
|
|
22e1bd6b92 | ||
|
|
540428aefc | ||
|
|
2ea0eb0783 | ||
|
|
24b1cd12ba | ||
|
|
06df5cc31a | ||
|
|
0a945cc6bf | ||
|
|
78603f5f9c | ||
|
|
cdc3a1bbc9 | ||
|
|
8a6f6ab147 | ||
|
|
3b19e60111 | ||
|
|
eff5a535e3 | ||
|
|
fc9ab73640 | ||
|
|
512a389670 | ||
|
|
077ccf0954 | ||
|
|
04d10ed337 | ||
|
|
ae07f2fb01 | ||
|
|
a83ef3a9ad | ||
|
|
84106ec919 | ||
|
|
72dfa64678 | ||
|
|
bdcf383408 | ||
|
|
b08d2859e1 | ||
|
|
851a978859 |
@@ -20,7 +20,6 @@
|
||||
"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|\.dxf"
|
||||
- ./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"
|
||||
stages:
|
||||
- Build
|
||||
- Annotate
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[Unit]
|
||||
Description=Clever ROS package
|
||||
Requires=roscore.service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=pi
|
||||
|
||||
@@ -1,735 +1,723 @@
|
||||
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:
|
||||
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]
|
||||
stretch: ros-melodic-ws281x
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[Unit]
|
||||
Description=Launcher for the ROS master, parameter server and rosout logging node
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=pi
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
# /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
|
||||
|
||||
#
|
||||
# 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:*
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
LOG_FILE=$1
|
||||
mv -f ${LOG_FILE} ${LOG_FILE}.1
|
||||
@@ -95,9 +95,7 @@ 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/'
|
||||
|
||||
@@ -42,7 +42,7 @@ network={
|
||||
ssid="CLEVER"
|
||||
psk="cleverwifi"
|
||||
mode=2
|
||||
proto=WPA RSN
|
||||
proto=RSN
|
||||
key_mgmt=WPA-PSK
|
||||
pairwise=CCMP
|
||||
group=CCMP
|
||||
|
||||
@@ -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 clever/www/CATKIN_IGNORE apps/CATKIN_IGNORE # ignore documentation files by catkin
|
||||
touch node_modules/CATKIN_IGNORE docs/CATKIN_IGNORE _book/CATKIN_IGNORE # ignore documentation files by catkin
|
||||
|
||||
echo_stamp "Installing additional ROS packages"
|
||||
apt-get install -y --no-install-recommends \
|
||||
|
||||
@@ -112,7 +112,6 @@ python-dev \
|
||||
python3-dev \
|
||||
python-systemd \
|
||||
mjpg-streamer \
|
||||
python3-opencv \
|
||||
&& echo_stamp "Everything was installed!" "SUCCESS" \
|
||||
|| (echo_stamp "Some packages wasn't installed!" "ERROR"; exit 1)
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ source /home/pi/catkin_ws/devel/setup.bash
|
||||
cd /home/pi/catkin_ws/src/clever/builder/test/
|
||||
./tests.sh
|
||||
./tests.py
|
||||
./tests_py3.py
|
||||
|
||||
echo "Move /etc/ld.so.preload back to its original position"
|
||||
mv /etc/ld.so.preload.disabled-for-build /etc/ld.so.preload
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Make sure our Python 3 software is installed
|
||||
|
||||
import cv2
|
||||
|
||||
print(cv2.getBuildInformation())
|
||||
@@ -63,16 +63,11 @@
|
||||
<!-- 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 -->
|
||||
<include file="$(find clever)/launch/led.launch" if="$(arg led)"/>
|
||||
|
||||
<!-- rc backend -->
|
||||
<node name="rc" pkg="clever" type="rc" output="screen" if="$(arg rc)" clear_params="true">
|
||||
<!-- Send fake GCS heartbeats. Set to "true" for upstream PX4 -->
|
||||
<param name="use_fake_gcs" value="false"/>
|
||||
</node>
|
||||
<node name="rc" pkg="clever" type="rc" output="screen" if="$(arg rc)"/>
|
||||
</launch>
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
<!-- camera node -->
|
||||
<node pkg="nodelet" type="nodelet" name="main_camera" args="load cv_camera/CvCameraNodelet nodelet_manager" clear_params="true">
|
||||
<param name="device_path" value="/dev/video0"/> <!-- v4l2 device -->
|
||||
<param name="frame_id" value="main_camera_optical"/>
|
||||
<param name="camera_info_url" value="file://$(find clever)/camera_info/fisheye_cam_320.yaml"/>
|
||||
|
||||
|
||||
@@ -278,8 +278,7 @@ 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 &&
|
||||
voltage > 2.0) { // voltage < 2.0 likely indicates incorrect voltage measurement
|
||||
if (voltage < low_battery_threshold) {
|
||||
// notify low battery every time
|
||||
notify("low_battery");
|
||||
}
|
||||
|
||||
@@ -34,15 +34,12 @@ public:
|
||||
nh(),
|
||||
nh_priv("~")
|
||||
{
|
||||
bool use_fake_gcs = nh_priv.param("use_fake_gcs", true);
|
||||
// Create socket thread
|
||||
std::thread t(&RC::socketThread, this);
|
||||
t.detach();
|
||||
|
||||
if (use_fake_gcs) {
|
||||
std::thread gcst(&RC::fakeGCSThread, this);
|
||||
gcst.detach();
|
||||
}
|
||||
std::thread gcst(&RC::fakeGCSThread, this);
|
||||
gcst.detach();
|
||||
|
||||
initLatchedState();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
# 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
|
||||
@@ -95,7 +94,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
|
||||
@@ -245,18 +244,15 @@ 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)
|
||||
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)
|
||||
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')
|
||||
|
||||
@@ -696,67 +692,9 @@ 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()
|
||||
@@ -769,7 +707,6 @@ def selfcheck():
|
||||
check_optical_flow()
|
||||
check_vpe()
|
||||
check_rangefinder()
|
||||
check_rpi_health()
|
||||
check_cpu_usage()
|
||||
check_boot_duration()
|
||||
|
||||
|
||||
15980
docs/assets/dxf/arm.dxf
15980
docs/assets/dxf/arm.dxf
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
19794
docs/assets/dxf/deck.dxf
19794
docs/assets/dxf/deck.dxf
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
15334
docs/assets/dxf/leg.dxf
15334
docs/assets/dxf/leg.dxf
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 104 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 90 KiB |
BIN
docs/assets/raspberry3.jpg
Normal file
BIN
docs/assets/raspberry3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
@@ -20,37 +20,34 @@
|
||||
* [Connection to the Pixracer](connection.md)
|
||||
* [Using QGroundControl over Wi-Fi](gcs_bridge.md)
|
||||
* [Remote shell](ssh.md)
|
||||
* [Command line interface](cli.md)
|
||||
* [Editing files](editing.md)
|
||||
* [Automated self-checks](selfcheck.md)
|
||||
* [Viewing images from cameras](web_video_server.md)
|
||||
* Programming
|
||||
* [Overview](programming.md)
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.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)
|
||||
* [Simple OFFBOARD](simple_offboard.md)
|
||||
* [Coordinate systems (frames)](frames.md)
|
||||
* [Code snippets](snippets.md)
|
||||
* [Interfacing with a laser rangefinder](laser.md)
|
||||
* [Computer vision basics](camera.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)
|
||||
* [Software autorun](autolaunch.md)
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.md)
|
||||
* [Interfacing with a laser rangefinder](laser.md)
|
||||
* [Software autorun](autolaunch.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)
|
||||
* [Model files for parts](models.md)
|
||||
* [ROS Melodic installation](ros-install.md)
|
||||
* [ROS Kinetic installation](ros-install.md)
|
||||
* [Remote control app](rc.md)
|
||||
* [Wi-Fi Configuration](network.md)
|
||||
* [UART settings](uart.md)
|
||||
@@ -78,6 +75,5 @@
|
||||
* [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)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
## Configuration
|
||||
|
||||
Set the `aruco` argument in `~/catkin_ws/src/clever/clever/launch/clever.launch` to `true`:
|
||||
Set the `aruco` argument in `~/catkin_ws/src/clever/clever/launch/aruco.launch` to `true`:
|
||||
|
||||
```xml
|
||||
<arg name="aruco" default="true"/>
|
||||
|
||||
@@ -10,7 +10,7 @@ Using this module along with [map-based navigation](aruco_map.md) is also possib
|
||||
|
||||
## Setup
|
||||
|
||||
Set the `aruco` argument in `~/catkin_ws/src/clever/clever/launch/clever.launch` to `true`:
|
||||
Set the `aruco` argument in `~/catkin_ws/src/clever/clever/launch/aruco.launch` to `true`:
|
||||
|
||||
```xml
|
||||
<arg name="aruco" default="true"/>
|
||||
|
||||
@@ -279,9 +279,6 @@ The flight controller expects PPM signal from your RC gear. Switch your transmit
|
||||
|
||||
1. Prepare the laser rangefinder by soldering leads to it.
|
||||
2. Use four 2x5 self-tapping screws to secure the camera.
|
||||
|
||||
> **Warning** Make sure the screws don't touch any components on the camera PCB! Otherwise the camera may not function properly.
|
||||
|
||||
3. Mount the laser rangefinder on the lower deck using two M3x8 screws and steel nuts.
|
||||
|
||||
<div class="image-group">
|
||||
|
||||
@@ -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](cli.md#editing).
|
||||
- Use the nano editor to edit files. [Instructions for working with nano] (editing.md).
|
||||
|
||||
> **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 computer 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 comupter 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 [set in file](cli.md#editing) `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
Position and orientation of the main camera is determined in file `~/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"/>
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,60 +0,0 @@
|
||||
# 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,52 +1,60 @@
|
||||
# Connecting Raspberry Pi to the flight controller
|
||||
Connecting Pixhawk/Pixracer to Raspberry Pi
|
||||
===
|
||||
|
||||
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.
|
||||
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).
|
||||
|
||||
## USB connection
|
||||
Check operability of the connection [by running on Raspberry Pi](ssh.md):
|
||||
|
||||
USB connection is the preferred way to connect to the flight controller.
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
|
||||
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):
|
||||
The `connected` field should contain value `True`.
|
||||
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
Connection via USB
|
||||
---
|
||||
|
||||
The `connected` field should have the `True` value.s
|
||||
Connect Pixhawk/Pixracer to micro USB in Raspberry Pi with a USB cable.
|
||||
|
||||
> **Hint** You need to set the `CBRK_USB_CHK` [parameter](px4_parameters.md) to 197848 for the USB connection to work.
|
||||
Make sure that in Clever launch file (`~/catkin_ws/src/clever/clever/launch/clever.launch`), connection type is set to USB:
|
||||
|
||||
## UART connection
|
||||
```xml
|
||||
<arg name="fcu_conn" default="usb"/>
|
||||
```
|
||||
|
||||
<!-- TODO: Connection scheme -->
|
||||
After the launch file is edited, restart package `clever`:
|
||||
|
||||
UART connection is another way for the Raspberry Pi and FCU to communicate.
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
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:
|
||||
> **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.
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
Connection via UART
|
||||
---
|
||||
|
||||
Be sure to restart the `clever` service after editing the .launch file:
|
||||
TODO connection diagram
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
Make sure that in Clever launch file (`~/catkin_ws/src/clever/clever/clever.launch`), connection type is set to UART:
|
||||
|
||||
> **Hint** Set the `SYS_COMPANION` PX4 parameter to 921600 to enable UART on the FCU.
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
|
||||
## SITL connection
|
||||
After the launch-file is edited, restart package `clever`:
|
||||
|
||||
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):
|
||||
```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):
|
||||
|
||||
```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)
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
# 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.
|
||||
5
docs/en/editing.md
Normal file
5
docs/en/editing.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Editing files
|
||||
|
||||
Use **nano** text editor to edit files on a Raspberry Pi.
|
||||
|
||||
<!-- TODO -->
|
||||
@@ -12,11 +12,6 @@ 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,5 +67,3 @@ 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)
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# 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}
|
||||
### Auto flight modes
|
||||
|
||||
In autonomous flight modes the quadcopter ignores the control signals from the transmitter and uses a program to fly.
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# 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,9 +3,7 @@ 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/raspberry.png" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
|
||||
Technical specifications:
|
||||
<img src="../assets/raspberry3.jpg" width="500">
|
||||
|
||||
* Weight is 45 grams.
|
||||
* Clock rate is 1.2 GHz.
|
||||
@@ -14,6 +12,19 @@ Technical specifications:
|
||||
* Four USB 2.0 ports.
|
||||
* An HDMI port.
|
||||
|
||||
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 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.
|
||||
|
||||
**Next**: [Raspberry Pi image](image.md)
|
||||
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)
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
# ROS Melodic package installation and setup
|
||||
# ROS Kinetic 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/melodic/Installation/Ubuntu).
|
||||
> **Hint** For more details on installation refer to [the main article](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
|
||||
## ROS Melodic installation on 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
|
||||
|
||||
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`.
|
||||
|
||||
@@ -31,13 +35,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-melodic-desktop-full
|
||||
sudo apt-get install ros-kinetic-desktop-full
|
||||
```
|
||||
|
||||
+ If you plan to use ROS exclusively for tools rqt, rviz etc.:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-melodic-desktop
|
||||
sudo apt-get install ros-kinetic-desktop
|
||||
```
|
||||
|
||||
After the package has installed, initialize `rosdep`.
|
||||
@@ -51,12 +55,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/melodic/setup.bash" >> ~/.bashrc
|
||||
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
If you whish to install any additionnal packages for yout ROS Melodic simply use:
|
||||
If you whish to install any additionnal packages for yout ROS Kinetic simply use:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-melodic-PACKAGE
|
||||
sudo apt-get install ros-kinetic-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/melodic/Installation/Ubuntu
|
||||
Main article: http://wiki.ros.org/kinetic/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 Melodic distribution, we recommend using Ubuntu 18.04.
|
||||
> **Note** For ROS Kinetic distribution, we recommend using Ubuntu 16.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-melodic-desktop-full` or `ros-melodic-desktop` using the [installation documentation](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
Install package `ros-kinetic-desktop-full` or `ros-kinetic-desktop` using the [installation documentation](http://wiki.ros.org/kinetic/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-melodic-jsk-visualization
|
||||
sudo apt-get install ros-kinetic-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-melodic-rqt-multiplot`);
|
||||
* `rqt_multiplot` – Building charts from the data from of arbitrary topics (installation: `sudo apt-get install ros-kinetic-rqt-multiplot`);
|
||||
* Bag – working with [Bag-files](http://wiki.ros.org/rosbag).
|
||||
|
||||
@@ -21,9 +21,7 @@ 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.
|
||||
* RPi health – checks the [onboard computer](raspberry.md) status.
|
||||
* CPU usage – checks the CPU load of the onboard computer.
|
||||
* VPE — checks whether VPE data is published
|
||||
* Rangefinder — checks whether [rangefinder](laser.md) data is published
|
||||
|
||||
> **Caution** Pay attention on the checks marked with *WARN* sign. If necessary, contact [Copter Express technical support](tg://resolve?domain=COEXHelpdesk).
|
||||
|
||||
@@ -120,7 +120,6 @@ 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(vx=0.5, frame_id='body', auto_arm=True) # flying forward at the velocity of 0.5 mps
|
||||
set_velocity(x=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,5 +25,3 @@ 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 18.04 and [ROS Melodic](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
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).
|
||||
|
||||
[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**: [Connecting Raspberry Pi to the flight controller](connection.md).
|
||||
**Next**: [Using QGroundControl via Wi-Fi](gcs_bridge.md).
|
||||
|
||||
@@ -20,20 +20,21 @@
|
||||
* [Подключение к Pixracer](connection.md)
|
||||
* [QGroundControl по Wi-Fi](gcs_bridge.md)
|
||||
* [SSH-доступ](ssh.md)
|
||||
* [Командная строка](cli.md)
|
||||
* [Редактирование файлов](editing.md)
|
||||
* [Автоматическая проверка](selfcheck.md)
|
||||
* [Просмотр видеострима с камер](web_video_server.md)
|
||||
* Программирование
|
||||
* [Общая информация](programming.md)
|
||||
* [ROS](ros.md)
|
||||
* [MAVROS](mavros.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)
|
||||
@@ -41,17 +42,15 @@
|
||||
* [Компьютерное зрение](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)
|
||||
* [CAD-модели Клевера](models.md)
|
||||
* [STL-модели Клевера](models.md)
|
||||
* [Docker-контейнер с симулятором](sitl_docker.md)
|
||||
* [Установка ROS Melodic](ros-install.md)
|
||||
* [Установка ROS Kinetic](ros-install.md)
|
||||
* [Пилотирование со смартфона](rc.md)
|
||||
* [Настройка сети RPi](network.md)
|
||||
* [Интерфейс UART](uart.md)
|
||||
|
||||
@@ -279,9 +279,6 @@
|
||||
|
||||
1. Подготовьте лазерный дальномер к монтажу, предварительно напаяв на него контакты.
|
||||
2. Установите камеру на 4 самореза 2х5.
|
||||
|
||||
> **Warning** Убедитесь, что саморезы не касаются деталей на печатной плате камеры. В противном случае камера может не заработать.
|
||||
|
||||
3. Установить на деку лазерный дальномер с помощью 2 винтов М3х8 и стальных гаек.
|
||||
|
||||
<div class="image-group">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
- Если необходимо, можно поменять название и пароль сети. См. статью "[Настройка сети](network.md#изменение-пароля-или-ssid-имени-сети)". Остальные операции с сетью производить не нужно.
|
||||
|
||||
- Для редактирования файлов пользуйтесь редактором nano. [Инструкция по работе с редактором](cli.md#editing).
|
||||
- Для редактирования файлов пользуйтесь редактором nano. [Инструкция по работе с редактором](editing.md).
|
||||
|
||||
> **Hint** В редакторе перемещать курсор можно только стрелками на клавиатуре.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
Для корректной работы всех модулей, связанных с компьютерным зрением (в том числе [полет по ArUco-маркерам](aruco.md) и [Optical Flow](optical_flow.md)) необходимо корректно выставленная ориентация основной камеры Клевера.
|
||||
|
||||
Расположение и ориентация камеры [задается в файле](cli.md#editing) `~/catkin_ws/src/clever/clever/launch/main_camera.launch`:
|
||||
Расположение и ориентация камеры [задается в файле](editing.md) `~/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"/>
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# Командная строка
|
||||
|
||||
В 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,46 +1,56 @@
|
||||
# Подключение Raspberry Pi к полетному контроллеру
|
||||
Подключение Pixhawk/Pixracer к Raspberry Pi
|
||||
===
|
||||
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с Pixhawk (Pixracer) по Wi-Fi](gcs_bridge.md), использования [телефонного пульта](rc.md) и других функций необходимо соединение Raspberry Pi и полетного контроллера.
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с Pixhawk (Pixracer) по Wi-Fi](gcs_bridge.md), использования [телефонного пульта](rc.md) и других функций необходимо подсоединить Raspberry Pi к Pixhawk (Pixracer).
|
||||
|
||||
## Подключение по USB
|
||||
Убедиться в работоспособности подключения, [выполнив на Raspberry Pi](ssh.md):
|
||||
|
||||
Основным способом подключения является подключение по интерфейсу USB.
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
|
||||
1. Соедините Raspberry Pi и полетный контроллер micro-USB to USB кабелем.
|
||||
2. [Подключитесь в Raspberry Pi по SSH](ssh.md).
|
||||
3. Убедитесь в работоспособности подключения, [выполнив на Raspberry Pi](ssh.md):
|
||||
Поле `connected` должно содержать значение `True`.
|
||||
|
||||
```bash
|
||||
rostopic echo /mavros/state
|
||||
```
|
||||
Подключение по USB
|
||||
---
|
||||
|
||||
Поле `connected` должно содержать значение `True`.
|
||||
Соедините 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
|
||||
```
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по USB необходимо установить значение [параметра](px4_parameters.md) `CBRK_USB_CHK` на 197848.
|
||||
|
||||
## Подключение по UART
|
||||
Подключение по UART
|
||||
---
|
||||
|
||||
<!-- TODO схема подключения -->
|
||||
TODO схема подключения
|
||||
|
||||
Дополнительным способом подключения является подключение подключение по интерйсу UART.
|
||||
Необходимо убедиться, что в launch-файле Клевера (`~/catkin_ws/src/clever/clever/clever.launch`) тип подключения установлен на UART:
|
||||
|
||||
1. Подключите Raspberry Pi к полетному контроллеру по UART.
|
||||
2. [Подключитесь в Raspberry Pi по SSH](ssh.md).
|
||||
3. Поменяйте в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) тип подключения на UART:
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
|
||||
```xml
|
||||
<arg name="fcu_conn" default="uart"/>
|
||||
```
|
||||
При изменении launch-файла необходимо перезапустить пакет `clever`:
|
||||
|
||||
При изменении launch-файла необходимо перезапустить пакет `clever`:
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и полетного контроллера по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
|
||||
## Подключение к SITL
|
||||
Подключение к SITL
|
||||
---
|
||||
|
||||
Для того, чтобы подсоединиться к локально/удаленно запущенному [SITL](sitl.md), необходимо установить аргумент `fcu_conn` в `udp`, и `fcu_ip` в IP-адрес машины, где запущен SITL (`127.0.0.1` для локального):
|
||||
|
||||
@@ -48,5 +58,3 @@
|
||||
<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/1017592/) проходит 11–13 октября в Технополисе "Москва".
|
||||
Хакатон [Copter Hack 2019](https://copterexpress.timepad.ru/event/768108/) проходит 11–13 октября в Технополисе "Москва".
|
||||
|
||||
Официальный сайт: https://ru.coex.tech/copterhack.
|
||||
|
||||
|
||||
27
docs/ru/editing.md
Normal file
27
docs/ru/editing.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Редактирование файлов
|
||||
|
||||
Используйте редактор **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,11 +12,6 @@
|
||||
* `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,5 +48,3 @@ sudo systemctl restart clever
|
||||
|
||||
1. Измените параметр `gcs_bridge` на `udp-pb`.
|
||||
2. При открытии программы QGroundControl соединение должно установиться автоматически.
|
||||
|
||||
**Далее**: [Доступ по SSH](ssh.md).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# CAD-модели
|
||||
# STL-модели
|
||||
|
||||
На этой странице представлены CAD-модели некоторых деталей квадрокоптеров Клевер.
|
||||
На этой странице представлены STL-модели некоторых деталей квадрокоптеров Клевер.
|
||||
|
||||
## Клевер 4
|
||||
|
||||
@@ -13,20 +13,3 @@
|
||||
Заполнение: не менее 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}
|
||||
### Автоматический полет
|
||||
|
||||
В этих режимах квадрокоптер игнорирует сигналы с пульта и летает по какой-либо автоматической программе.
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# Программирование
|
||||
|
||||
<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,9 +3,7 @@ Raspberry Pi
|
||||
|
||||
**Raspberry Pi** – это свободно помещающийся на ладони одноплатный компьютер, созданный на базе мобильного микропроцессора ARM. Он обладает низким энергопотреблением и может работать даже от солнечных батарей. Raspberry Pi входит в комплекты программируемого квадрокоптера Клевер.
|
||||
|
||||
<img src="../assets/raspberry.png" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
|
||||
Технические характеристики:
|
||||
<img src="../assets/raspberry3.jpg" class="center zoom" alt="Raspberry Pi 3" width="400">
|
||||
|
||||
* Вес – 45 грамм.
|
||||
* Тактовая частота 1.2 ГГц.
|
||||
@@ -14,6 +12,15 @@ Raspberry Pi
|
||||
* 4 порта USB 2.0.
|
||||
* HDMI-порт.
|
||||
|
||||
В Клевере Raspberry Pi подключается к полетному контроллеру и используется как вспомогательный компьютер. Он позволяет [подключаться к дрону по Wi-Fi](wifi.md), программировать автономные полеты, работать с периферией и многое другое.
|
||||
Сферы применения компьютера Raspberry Pi достаточно широки, ведь это всё-таки вполне полноценный компьютер. Если вам нужна машина для решения несложных задач, которые не требуют применения мощных ресурсов в плане вычисления, то вы смело можете подключать к устройству Raspberry Pi стандартные элементы компьютера: монитор; мышь; клавиатуру.
|
||||
|
||||
Raspberry Pi – очень популярная платформа, на которой можно реализовать множество проектов, таких как:
|
||||
|
||||
* сервер домашней автоматизации (или система «умный дом»);
|
||||
* сервер хранения данных (NAS);
|
||||
* домашний медиа-сервер;
|
||||
* «мозговой центр» для автоматизированных станков или роботов.
|
||||
|
||||
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту Pixhawk.
|
||||
|
||||
**Далее**: [образ для Raspberry Pi](image.md).
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
# Установка и настройка пакета ROS Melodic
|
||||
# Установка и настройка пакета ROS Kinetic
|
||||
|
||||
Для работы с такими инструментами как: rqt, rviz и т. д., а также для запуска симулятора (SITL) вам потребуется установленный и настроенный пакет ROS.
|
||||
|
||||
> **Hint** Более подробную инструкцию по установке смотрите в [основной статье](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
> **Hint** Более подробную инструкцию по установке смотрите в [основной статье](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
|
||||
## Установка ROS Melodic на Ubuntu
|
||||
<!-- -->
|
||||
|
||||
> **Hint** В случае, если вы используете Ubuntu версии 18.04, вместо ROS Kinetic вам нужно будет установить ROS Melodic. Полную инструкцию по установке вы можете найти [здесь](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
|
||||
## Установка ROS Kinetic на Ubuntu
|
||||
|
||||
Для того, чтобы загрузить и установить правильную версию пакета требуется сделать настройки репозиториев, для этого откройте "Программы и обновления" и разрешите `restricted`, `universe` и `multiverse`.
|
||||
|
||||
@@ -31,13 +35,13 @@ sudo apt-get update
|
||||
+ Если вы планируете использовать ROS вместе с симуляцией (также содержит инструменты: rqt, rviz и т. д):
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-melodic-desktop-full
|
||||
sudo apt-get install ros-kinetic-desktop-full
|
||||
```
|
||||
|
||||
+ Если вы планируете использовать ROS исключительно работать с инструментами rqt, rviz и т. д:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-melodic-desktop
|
||||
sudo apt-get install ros-kinetic-desktop
|
||||
```
|
||||
|
||||
После установки пакета вам нужно инициализировать `rosdep`.
|
||||
@@ -51,12 +55,12 @@ rosdep update
|
||||
Если вам не удобно запускать переменное окружение вручную каждый раз, вы можете настроить его так, чтобы оно добавлялось в ваш сеанс bash при каждом запуске новой оболочки:
|
||||
|
||||
```bash
|
||||
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
|
||||
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
Если вы хотите установить какие-либо дополнительные пакеты для вашего ROS Melodic просто используйте:
|
||||
Если вы хотите установить какие-либо дополнительные пакеты для вашего ROS Kinetic просто используйте:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-melodic-PACKAGE
|
||||
sudo apt-get install ros-kinetic-PACKAGE
|
||||
```
|
||||
|
||||
@@ -8,13 +8,13 @@ ROS – это широко используемый фреймворк для
|
||||
Установка
|
||||
---
|
||||
|
||||
Основная статья: http://wiki.ros.org/melodic/Installation/Ubuntu
|
||||
Основная статья: http://wiki.ros.org/kinetic/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 Melodic рекомендуется Ubuntu версии 18.04.
|
||||
> **Note** Для дистрибутива ROS Kinetic рекомендуется Ubuntu версии 16.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-melodic-desktop-full` или `ros-melodic-desktop`, используя [документацию по установке](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
На него необходимо установить пакет `ros-kinetic-desktop-full` или `ros-kinetic-desktop`, используя [документацию по установке](http://wiki.ros.org/kinetic/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-melodic-jsk-visualization
|
||||
sudo apt-get install ros-kinetic-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-melodic-rqt-multiplot`);
|
||||
* `rqt_multiplot` – построение графиков по данным из произвольным топиков (установка: `sudo apt-get install ros-kinetic-rqt-multiplot`);
|
||||
* Bag – работа с [Bag-файлами](http://wiki.ros.org/rosbag).
|
||||
|
||||
@@ -21,7 +21,5 @@ rosrun clever selfcheck.py
|
||||
* ArUco – проверка работы [распознавания ArUco-маркеров](aruco.md).
|
||||
* VPE – проверка правильности работы VPE.
|
||||
* Rangefinder – проверка работы [дальномера](laser.md).
|
||||
* RPi health – проверка состояния [бортового компьютера](raspberry.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 Melodic` изначально ориентированна для Ubuntu версии 18.04 (Bionic), поэтому актуальность данной инструкции гарантируется только для данной версии операционной системы.
|
||||
> **Caution** Среда `ROS Kinetic` в изначально ориентированна для `Ubuntu (Xenial)` версии 16.04, по этому актуальность данной инструкции гарантируется только для соответственной версии операционной системы.
|
||||
|
||||
В первую очередь вам потребуется установить полный пакет ROS Melodic desktop-full, инструкцию по установке вы можете найти в [статье по установке ROS](ros-install.md).
|
||||
В первую очередь вам потребуется установить полный пакет ROS Kinetic desktop-full, инструкцию по установке вы можете найти в [статье по установке ROS](ros-install.md).
|
||||
|
||||
После того, как вы выполнили указанные выше инструкции, вам нужно проверить, есть ли в вашем пакете `ROS` все нужные пакеты.
|
||||
|
||||
```bash
|
||||
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
|
||||
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
|
||||
```
|
||||
|
||||
Чтобы избежать ошибок во время запуска симулятора, вам нужно будет установить Gazebo v9.11, для этого подключите необходимый репозиторий и добавьте соответствующие ключи:
|
||||
Чтобы избежать ошибок во время запуска симулятора, вам нужно будет установить Gazebo v7.14, для этого подключите необходимый репозиторий и добавьте соответствующие ключи:
|
||||
|
||||
```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,7 +164,6 @@ 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(vx=0.5, frame_id='body', auto_arm=True) # полет вперед со скоростью 0.5 мс
|
||||
set_velocity(x=0.5, frame_id='body', auto_arm=True) # полет вперед со скоростью 0.5 мс
|
||||
|
||||
while True:
|
||||
if read_distance_filtered() < 1:
|
||||
|
||||
@@ -21,5 +21,3 @@ 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 18.04 и [ROS Melodic](http://wiki.ros.org/melodic/Installation/Ubuntu).
|
||||
Для просмотра изображений через инструменты rqt необходим компьютер с установленной Ubuntu 16.04 и [ROS Kinetic](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
|
||||
[Подключитесь к Wi-Fi сети Клевера](wifi.md) и запустите `rqt_image_view` с указанием его IP-адреса:
|
||||
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
|
||||
<img src="../assets/web.png" alt="Веб-интерфейс Клевера" class="zoom">
|
||||
|
||||
**Далее**: [Подключение Raspberry Pi к полетному контроллеру](connection.md).
|
||||
**Далее**: [Подключение QGroundControl по Wi-Fi](gcs_bridge.md).
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
{ "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