forked from zbw/yiliao2026
目前采用只使用陀螺仪z轴数据
This commit is contained in:
@@ -62,16 +62,18 @@ include_directories(
|
||||
)
|
||||
set(origincar_base_node_SRCS
|
||||
src/origincar_base.cpp
|
||||
src/Quaternion_Solution.cpp
|
||||
)
|
||||
|
||||
add_executable(origincar_base_node src/origincar_base.cpp src/Quaternion_Solution.cpp)
|
||||
add_executable(origincar_base_node src/origincar_base.cpp)
|
||||
ament_target_dependencies(origincar_base_node tf2_ros tf2 tf2_geometry_msgs rclcpp std_msgs geometry_msgs robot_localization nav_msgs std_srvs sensor_msgs ackermann_msgs serial origincar_msg origincar_description)
|
||||
|
||||
#add_executable(testNode src/test.cpp src/Quaternion_Solution.cpp)
|
||||
#ament_target_dependencies(testNode rclcpp std_msgs nav_msgs std_srvs sensor_msgs ackermann_msgs serial origincar_msg)
|
||||
|
||||
install(PROGRAMS scripts/cmd_vel_to_ackermann_drive.py DESTINATION lib/${PROJECT_NAME})
|
||||
install(PROGRAMS
|
||||
scripts/cmd_vel_to_ackermann_drive.py
|
||||
DESTINATION lib/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
install(TARGETS
|
||||
origincar_base_node
|
||||
|
||||
@@ -143,6 +143,7 @@ private:
|
||||
|
||||
void Publish_ImuSensor();
|
||||
void Publish_Voltage();
|
||||
void Publish_GyroDebug();
|
||||
auto createQuaternionMsgFromYaw(double yaw);
|
||||
|
||||
bool Get_Sensor_Data();
|
||||
@@ -192,6 +193,7 @@ private:
|
||||
|
||||
rclcpp::Publisher<origincar_msg::msg::Data>::SharedPtr robotpose_publisher;
|
||||
rclcpp::Publisher<origincar_msg::msg::Data>::SharedPtr robotvel_publisher;
|
||||
rclcpp::Publisher<origincar_msg::msg::Data>::SharedPtr gyrodebug_publisher;
|
||||
// rclcpp::Publisher<nav_msgs::msg::Odometry>::SharedPtr tf_pub_;
|
||||
|
||||
std::shared_ptr<tf2_ros::TransformBroadcaster> tf_bro;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "origincar_base/origincar_base.h"
|
||||
#include "rclcpp/rclcpp.hpp"
|
||||
#include "origincar_base/Quaternion_Solution.h"
|
||||
#include "ackermann_msgs/msg/ackermann_drive_stamped.hpp"
|
||||
#include "origincar_msg/msg/data.hpp"
|
||||
#include "robot_localization/srv/set_pose.hpp"
|
||||
@@ -144,10 +143,6 @@ void origincar_base::Sign_Switch_Callback(const std_msgs::msg::Int32::SharedPtr
|
||||
{
|
||||
memset(&Robot_Pos, 0, sizeof(Robot_Pos));
|
||||
memset(&Mpu6050, 0, sizeof(Mpu6050));
|
||||
q0 = 0;
|
||||
q1 = 0;
|
||||
q2 = 0;
|
||||
q3 = 0;
|
||||
Robot_Pos.X = 0.54;
|
||||
Robot_Pos.Y = 0.2;
|
||||
Robot_Pos.Z = 0;
|
||||
@@ -180,14 +175,13 @@ void origincar_base::Sign_Switch_Callback(const std_msgs::msg::Int32::SharedPtr
|
||||
|
||||
void origincar_base::Publish_ImuSensor()
|
||||
{
|
||||
tf2::Quaternion q;
|
||||
q.setRPY(0.0, 0.0, Robot_Pos.Z);
|
||||
|
||||
sensor_msgs::msg::Imu Imu_Data_Pub;
|
||||
Imu_Data_Pub.header.stamp = rclcpp::Node::now();
|
||||
Imu_Data_Pub.header.frame_id = gyro_frame_id;
|
||||
|
||||
Imu_Data_Pub.orientation.x = Mpu6050.orientation.x;
|
||||
Imu_Data_Pub.orientation.y = Mpu6050.orientation.y;
|
||||
Imu_Data_Pub.orientation.z = Mpu6050.orientation.z;
|
||||
Imu_Data_Pub.orientation.w = Mpu6050.orientation.w;
|
||||
Imu_Data_Pub.orientation = tf2::toMsg(q);
|
||||
Imu_Data_Pub.orientation_covariance[0] = 1e6;
|
||||
Imu_Data_Pub.orientation_covariance[4] = 1e6;
|
||||
Imu_Data_Pub.orientation_covariance[8] = 1e-6;
|
||||
@@ -448,9 +442,6 @@ void origincar_base::Control()
|
||||
Robot_Pos.X += 1.03 * (Robot_Vel.X * cos(Robot_Pos.Z) - Robot_Vel.Y * sin(Robot_Pos.Z)) * Sampling_Time;
|
||||
Robot_Pos.Y += 1.01 * (Robot_Vel.X * sin(Robot_Pos.Z) + Robot_Vel.Y * cos(Robot_Pos.Z)) * Sampling_Time; // 1.125
|
||||
Robot_Pos.Z += Robot_Vel.Z * Sampling_Time;
|
||||
|
||||
Quaternion_Solution(Mpu6050.angular_velocity.x, Mpu6050.angular_velocity.y, Robot_Vel.Z,
|
||||
Mpu6050.linear_acceleration.x, Mpu6050.linear_acceleration.y, Mpu6050.linear_acceleration.z);
|
||||
Publish_ImuSensor();
|
||||
Publish_GyroDebug();
|
||||
Publish_Voltage();
|
||||
|
||||
Reference in New Issue
Block a user