mirror of
https://github.com/CopterExpress/clover.git
synced 2026-06-02 16:09:32 +00:00
Compare commits
1 Commits
simulator
...
test-raw-b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90be370119 |
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@@ -15,6 +15,14 @@ jobs:
|
|||||||
# run: |
|
# run: |
|
||||||
# docker run --rm -v $(pwd):/root/catkin_ws/src/clover ros:melodic-ros-base /root/catkin_ws/src/clover/builder/standalone-install.sh
|
# docker run --rm -v $(pwd):/root/catkin_ws/src/clover ros:melodic-ros-base /root/catkin_ws/src/clover/builder/standalone-install.sh
|
||||||
noetic:
|
noetic:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Native Noetic build
|
||||||
|
run: |
|
||||||
|
docker run --rm -v $(pwd):/root/catkin_ws/src/clover ros:noetic-ros-base /root/catkin_ws/src/clover/builder/standalone-install.sh
|
||||||
|
|
||||||
|
noetic-raw:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ros:noetic-ros-base
|
container: ros:noetic-ros-base
|
||||||
defaults:
|
defaults:
|
||||||
@@ -29,8 +37,6 @@ jobs:
|
|||||||
run: apt-get update && apt-get -y install python3-pip
|
run: apt-get update && apt-get -y install python3-pip
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: rosdep update && rosdep install --from-paths src --ignore-src -y
|
run: rosdep update && rosdep install --from-paths src --ignore-src -y
|
||||||
- name: Install GeographicLib datasets
|
|
||||||
run: wget -qO- https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh | bash
|
|
||||||
- name: catkin_make
|
- name: catkin_make
|
||||||
run: source /opt/ros/$ROS_DISTRO/setup.bash && catkin_make
|
run: source /opt/ros/$ROS_DISTRO/setup.bash && catkin_make
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
|||||||
@@ -251,5 +251,4 @@ if (CATKIN_ENABLE_TESTING)
|
|||||||
add_rostest(test/test_node_failure.test)
|
add_rostest(test/test_node_failure.test)
|
||||||
add_rostest(test/largemap.test)
|
add_rostest(test/largemap.test)
|
||||||
add_rostest(test/crash_opencv.test)
|
add_rostest(test/crash_opencv.test)
|
||||||
add_rostest(test/duplicate.test)
|
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -187,8 +187,6 @@ private:
|
|||||||
|
|
||||||
array_.markers.reserve(ids.size());
|
array_.markers.reserve(ids.size());
|
||||||
aruco_pose::Marker marker;
|
aruco_pose::Marker marker;
|
||||||
vector<geometry_msgs::TransformStamped> transforms;
|
|
||||||
transforms.reserve(ids.size());
|
|
||||||
geometry_msgs::TransformStamped transform;
|
geometry_msgs::TransformStamped transform;
|
||||||
transform.header.stamp = msg->header.stamp;
|
transform.header.stamp = msg->header.stamp;
|
||||||
transform.header.frame_id = msg->header.frame_id;
|
transform.header.frame_id = msg->header.frame_id;
|
||||||
@@ -206,33 +204,20 @@ private:
|
|||||||
snapOrientation(marker.pose.orientation, snap_to.transform.rotation, auto_flip_);
|
snapOrientation(marker.pose.orientation, snap_to.transform.rotation, auto_flip_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: check IDs are unique
|
||||||
if (send_tf_) {
|
if (send_tf_) {
|
||||||
transform.child_frame_id = getChildFrameId(ids[i]);
|
transform.child_frame_id = getChildFrameId(ids[i]);
|
||||||
|
|
||||||
// check if such static transform is in the map
|
// check if such static transform is in the map
|
||||||
if (map_markers_ids_.find(ids[i]) == map_markers_ids_.end()) {
|
if (map_markers_ids_.find(ids[i]) == map_markers_ids_.end()) {
|
||||||
// check if a markers with that id is already added
|
transform.transform.rotation = marker.pose.orientation;
|
||||||
bool send = true;
|
fillTranslation(transform.transform.translation, tvecs[i]);
|
||||||
for (auto &t : transforms) {
|
br_->sendTransform(transform);
|
||||||
if (t.child_frame_id == transform.child_frame_id) {
|
|
||||||
send = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (send) {
|
|
||||||
transform.transform.rotation = marker.pose.orientation;
|
|
||||||
fillTranslation(transform.transform.translation, tvecs[i]);
|
|
||||||
transforms.push_back(transform);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
array_.markers.push_back(marker);
|
array_.markers.push_back(marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_tf_) {
|
|
||||||
br_->sendTransform(transforms);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
markers_pub_.publish(array_);
|
markers_pub_.publish(array_);
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
@@ -1,8 +0,0 @@
|
|||||||
import pytest
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
def test_no_tf_repeated_data():
|
|
||||||
# `/rosout` acts weirdly inside rostest, so using a subprocess
|
|
||||||
cmd = """python -c 'import rospy, tf; rospy.init_node("foo"); listener = tf.TransformListener(); rospy.sleep(2)'"""
|
|
||||||
output = str(subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT))
|
|
||||||
assert 'TF_REPEATED_DATA' not in output, 'TF_REPEATED_DATA was logged on duplicate markers'
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<launch>
|
|
||||||
<node pkg="image_publisher" type="image_publisher" name="main_camera" args="$(find aruco_pose)/test/duplicate.png">
|
|
||||||
<param name="frame_id" value="main_camera_optical"/>
|
|
||||||
<param name="publish_rate" value="10"/>
|
|
||||||
<param name="camera_info_url" value="file://$(find aruco_pose)/test/camera_info.yaml" />
|
|
||||||
</node>
|
|
||||||
|
|
||||||
<node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager" required="true"/>
|
|
||||||
|
|
||||||
<node pkg="nodelet" clear_params="true" type="nodelet" name="aruco_detect" args="load aruco_pose/aruco_detect nodelet_manager" required="true">
|
|
||||||
<remap from="image_raw" to="main_camera/image_raw"/>
|
|
||||||
<remap from="camera_info" to="main_camera/camera_info"/>
|
|
||||||
<param name="length" value="0.33"/>
|
|
||||||
<param name="estimate_poses" value="true"/>
|
|
||||||
<param name="send_tf" value="true"/>
|
|
||||||
<param name="cornerRefinementMethod" value="1"/>
|
|
||||||
</node>
|
|
||||||
|
|
||||||
<param name="test_module" value="$(find aruco_pose)/test/duplicate.py"/>
|
|
||||||
<test test-name="aruco_pose_test" pkg="ros_pytest" type="ros_pytest_runner"/>
|
|
||||||
</launch>
|
|
||||||
@@ -120,7 +120,6 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/launch.
|
|||||||
# ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/kinetic-ros-clover.rosinstall' '/home/pi/ros_catkin_ws/'
|
# ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/kinetic-ros-clover.rosinstall' '/home/pi/ros_catkin_ws/'
|
||||||
# Add rename script
|
# Add rename script
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-ros.sh' ${REPO_URL} ${IMAGE_VERSION} false false ${NUMBER_THREADS}
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-ros.sh' ${REPO_URL} ${IMAGE_VERSION} false false ${NUMBER_THREADS}
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-simulator.sh'
|
|
||||||
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-validate.sh'
|
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-validate.sh'
|
||||||
|
|
||||||
${BUILDER_DIR}/image-resize.sh ${IMAGE_PATH}
|
${BUILDER_DIR}/image-resize.sh ${IMAGE_PATH}
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
#! /usr/bin/env bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Script for build the image. Used builder script of the target repo
|
|
||||||
# For build: docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/builder/repo smirart/builder
|
|
||||||
#
|
|
||||||
# Copyright (C) 2018 Copter Express Technologies
|
|
||||||
#
|
|
||||||
# Author: Artem Smirnov <urpylka@gmail.com>
|
|
||||||
#
|
|
||||||
# Distributed under MIT License (available at https://opensource.org/licenses/MIT).
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
|
|
||||||
set -ex # exit on error, echo commands
|
|
||||||
|
|
||||||
echo "--- Downloading PX4"
|
|
||||||
cd /home/pi/catkin_ws/
|
|
||||||
git clone --recursive --depth 1 --branch v1.13.0 https://github.com/PX4/PX4-Autopilot.git /home/pi/PX4-Autopilot
|
|
||||||
ln -s /home/pi/PX4-Autopilot /home/pi/catkin_ws/src/
|
|
||||||
ln -s /home/pi/PX4-Autopilot/Tools/sitl_gazebo /home/pi/catkin_ws/src/
|
|
||||||
|
|
||||||
echo "--- Installing PX4 dependencies"
|
|
||||||
echo "progress=dot:giga" > /home/pi/.wgetrc # make wget don't spam to log
|
|
||||||
apt-get install --no-install-recommends -y gazebo11
|
|
||||||
/home/pi/PX4-Autopilot/Tools/setup/ubuntu.sh --no-nuttx
|
|
||||||
rm /home/pi/.wgetrc
|
|
||||||
pip3 install --user toml
|
|
||||||
|
|
||||||
echo "--- Patching mavlink_sitl_gazebo"
|
|
||||||
# See https://github.com/PX4/PX4-SITL_gazebo/pull/872
|
|
||||||
cd /home/pi/PX4-Autopilot/Tools/sitl_gazebo
|
|
||||||
patch -p1 < /tmp/patches/sitl_gazebo.patch
|
|
||||||
|
|
||||||
echo "--- Build mavlink"
|
|
||||||
cd /home/pi/catkin_ws
|
|
||||||
catkin_make mavlink_c_generate -DCATKIN_WHITELIST_PACKAGES="px4" # at first build PX4's mavlink to enforce mavlink_sitl_gazebo using it
|
|
||||||
ln -s "." build/mavlink/mavlink # fix https://github.com/PX4/PX4-Autopilot/pull/19964
|
|
||||||
|
|
||||||
echo "--- Building the workspace"
|
|
||||||
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
|
|
||||||
Reference in New Issue
Block a user