Compare commits
1 Commits
236bb1609a
...
92d96f94a6
Author | SHA1 | Date | |
---|---|---|---|
|
92d96f94a6 |
5
Makefile
5
Makefile
@ -1,4 +1,4 @@
|
|||||||
.PHONY: build run upload
|
.PHONY: build run upload legacy
|
||||||
|
|
||||||
SOURCES := $(wildcard src/ros2aria/src/*.cpp)
|
SOURCES := $(wildcard src/ros2aria/src/*.cpp)
|
||||||
HEADERS := $(wildcard src/ros2aria/src/*.hpp)
|
HEADERS := $(wildcard src/ros2aria/src/*.hpp)
|
||||||
@ -17,4 +17,5 @@ upload: .uploaded
|
|||||||
run: upload
|
run: upload
|
||||||
ssh lab1_5@pionier6 -t -- docker run --rm --network=host -it --device /dev/ttyS0 -v /home/lab1_5:/ws irth7/ros2aria-dev /ws/ros2aria
|
ssh lab1_5@pionier6 -t -- docker run --rm --network=host -it --device /dev/ttyS0 -v /home/lab1_5:/ws irth7/ros2aria-dev /ws/ros2aria
|
||||||
|
|
||||||
|
legacy:
|
||||||
|
ssh lab1_5@pionier6 -t -- ./run.sh
|
@ -36,7 +36,8 @@ add_executable(ros2aria
|
|||||||
src/publish.cpp
|
src/publish.cpp
|
||||||
src/sonar.cpp
|
src/sonar.cpp
|
||||||
src/pose.cpp
|
src/pose.cpp
|
||||||
src/gripper.cpp)
|
src/gripper.cpp
|
||||||
|
src/wheels.cpp)
|
||||||
|
|
||||||
ament_target_dependencies(ros2aria rclcpp)
|
ament_target_dependencies(ros2aria rclcpp)
|
||||||
ament_target_dependencies(ros2aria std_srvs)
|
ament_target_dependencies(ros2aria std_srvs)
|
||||||
|
@ -11,4 +11,7 @@ void Ros2Aria::publish()
|
|||||||
|
|
||||||
nav_msgs::msg::Odometry pose = handlePose(t);
|
nav_msgs::msg::Odometry pose = handlePose(t);
|
||||||
publishPose(pose);
|
publishPose(pose);
|
||||||
|
|
||||||
|
sensor_msgs::msg::JointState wheels = handleWheels(t);
|
||||||
|
publishWheels(wheels);
|
||||||
}
|
}
|
@ -18,6 +18,8 @@ Ros2Aria::Ros2Aria()
|
|||||||
|
|
||||||
pose_pub_ = this->create_publisher<nav_msgs::msg::Odometry>("pose", 1000);
|
pose_pub_ = this->create_publisher<nav_msgs::msg::Odometry>("pose", 1000);
|
||||||
|
|
||||||
|
wheels_pub_ = this->create_publisher<sensor_msgs::msg::JointState>("wheels", 1000);
|
||||||
|
|
||||||
// services
|
// services
|
||||||
stop_service_ = this->create_service<std_srvs::srv::Empty>("stop", std::bind(&Ros2Aria::stop, this, _1, _2));
|
stop_service_ = this->create_service<std_srvs::srv::Empty>("stop", std::bind(&Ros2Aria::stop, this, _1, _2));
|
||||||
gripper_open_service_ = this->create_service<std_srvs::srv::Empty>("gripper_open", std::bind(&Ros2Aria::gripper_open_callback, this, _1, _2));
|
gripper_open_service_ = this->create_service<std_srvs::srv::Empty>("gripper_open", std::bind(&Ros2Aria::gripper_open_callback, this, _1, _2));
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "sensor_msgs/msg/point_cloud.hpp"
|
#include "sensor_msgs/msg/point_cloud.hpp"
|
||||||
#include "sensor_msgs/msg/point_cloud2.hpp"
|
#include "sensor_msgs/msg/point_cloud2.hpp"
|
||||||
|
#include "sensor_msgs/msg/joint_state.hpp"
|
||||||
#include "geometry_msgs/msg/twist.hpp"
|
#include "geometry_msgs/msg/twist.hpp"
|
||||||
#include "nav_msgs/msg/odometry.hpp"
|
#include "nav_msgs/msg/odometry.hpp"
|
||||||
#include "std_srvs/srv/empty.hpp"
|
#include "std_srvs/srv/empty.hpp"
|
||||||
@ -38,6 +39,10 @@ private:
|
|||||||
rclcpp::Publisher<nav_msgs::msg::Odometry>::SharedPtr pose_pub_;
|
rclcpp::Publisher<nav_msgs::msg::Odometry>::SharedPtr pose_pub_;
|
||||||
void publishPose(nav_msgs::msg::Odometry pose);
|
void publishPose(nav_msgs::msg::Odometry pose);
|
||||||
|
|
||||||
|
sensor_msgs::msg::JointState handleWheels(rclcpp::Time stamp);
|
||||||
|
rclcpp::Publisher<sensor_msgs::msg::JointState>::SharedPtr wheels_pub_;
|
||||||
|
void publishWheels(sensor_msgs::msg::JointState wheels);
|
||||||
|
|
||||||
// subscribers
|
// subscribers
|
||||||
rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr cmd_vel_sub_;
|
rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr cmd_vel_sub_;
|
||||||
void cmd_vel_callback(const geometry_msgs::msg::Twist::SharedPtr msg);
|
void cmd_vel_callback(const geometry_msgs::msg::Twist::SharedPtr msg);
|
||||||
|
32
src/ros2aria/src/wheels.cpp
Normal file
32
src/ros2aria/src/wheels.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "ros2aria.hpp"
|
||||||
|
|
||||||
|
sensor_msgs::msg::JointState Ros2Aria::handleWheels(rclcpp::Time stamp)
|
||||||
|
{
|
||||||
|
sensor_msgs::msg::JointState wheels;
|
||||||
|
|
||||||
|
auto r = this->robot->getRobot();
|
||||||
|
|
||||||
|
r->requestEncoderPackets(); // TODO: check if this is synchronous or do we have a race condition or something
|
||||||
|
wheels.header.stamp = stamp;
|
||||||
|
wheels.name.resize(2);
|
||||||
|
wheels.position.resize(2);
|
||||||
|
wheels.velocity.resize(2);
|
||||||
|
wheels.effort.resize(0);
|
||||||
|
|
||||||
|
wheels.name[0] = "Wheel_L";
|
||||||
|
wheels.name[1] = "Wheel_R";
|
||||||
|
wheels.position[0] = r->getLeftEncoder();
|
||||||
|
wheels.position[1] = r->getRightEncoder();
|
||||||
|
wheels.velocity[0] = r->getLeftVel();
|
||||||
|
wheels.velocity[1] = r->getRightVel();
|
||||||
|
|
||||||
|
return wheels;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ros2Aria::publishWheels(sensor_msgs::msg::JointState wheels)
|
||||||
|
{
|
||||||
|
if (this->wheels_pub_->get_subscription_count() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this->wheels_pub_->publish(wheels);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user