أريد التحكم في الطائرة بدون طيار ( SkyViper ) في الداخل باستخدام الكاميرا الموجودة على متن الطائرة لتقدير الوضع. في الواقع ، أنا أبحث عن مشهد به الكثير من علامات ArUco وأقدر وضع طائرتى بدون طيار باستخدام كشف aruco وخوارزمية تقدير الوضع. قصة قصيرة طويلة ، أنا أستخدم الرؤية لتقدير وضع الطائرة بدون طيار سداسي الأبعاد. الآن أنوي إرسال هذه البيانات إلى FCU للتحكم في الطائرة بدون طيار في الوضع الموجه ، في الداخل. مع برنامج arducopter الثابت ، يبدو أن هناك شيئين يمكنني القيام بهما:
أ. استخدام البرنامج المساعد fake_pgs.
ب. استخدم vision_pose_estimate plugin
لكنني أواجه مشاكل مع كليهما. أريد أن أصف ما قمت به لكلا النهجين المذكورين أعلاه حتى يتمكن القارئ من مساعدتي ، في حال أخطأت في مكان ما.
أ. باستخدام fake_gps
# fake_gps
fake_gps:
# select data source
use_mocap: true # ~mocap/pose
mocap_transform: true # ~mocap/tf instead of pose
use_vision: false # ~vision (pose)
# origin (default: Zürich)
geo_origin:
lat: 30.6197674 # latitude [degrees]
lon: -96.3414215 # longitude [degrees]
alt: 99.9674829152 # altitude (height over the WGS-84 ellipsoid) [meters]
eph: 2.0
epv: 2.0
satellites_visible: 10 # virtual number of visible satellites
fix_type: 3 # type of GPS fix (default: 3D)
tf:
listen: false
send: false # send TF?
frame_id: "map" # TF frame_id
child_frame_id: "Quadrotor_pose" # TF child_frame_id
rate_limit: 10.0 # TF rate
gps_rate: 5.0 # GPS data publishing rate
هل يمكن لأي شخص مساعدتي هنا للحصول على هذا الشيء؟ هل هناك أي شيء آخر يجب أن أفعله؟ أي معلمات يجب علي تعيينها أو إلغاء تعيينها؟
ب. باستخدام Vision_pose
# vision_pose_estimate
vision_pose:
tf:
listen: false # enable tf listener (disable topic subscribers)
frame_id: "map"
child_frame_id: "vision_estimate"
rate_limit: 10.0
VISION_POSITION_DELTA
بدلاً من VISION_POSITION_ESTIMATE
.الكثير من الوقت الذي يقضيه في هذا ، أي مساعدة موضع تقدير كبير !!
ملاحظة: لقد كنت قادرًا على القيام بـ Vision_position_estimate في البرامج الثابتة PX4 ، ولم أجرب fake_gps هناك ولكن نظرًا لبعض القيود ، أريد أن أجعل هذا العمل على برنامج arducopter الثابت.
مافروس: 0.18
روس: حركي
أوبونتو: 16.04
[X] ArduPilot
[] PX4
الإصدار: 3.4.6.0
started roslaunch server http://subodh-desktop:41065/
SUMMARY
========
CLEAR PARAMETERS
* /mavros/
PARAMETERS
* /mavros/cmd/use_comp_id_system_control: False
* /mavros/conn/heartbeat_rate: 1.0
* /mavros/conn/system_time_rate: 0.0
* /mavros/conn/timeout: 10.0
* /mavros/conn/timesync_rate: 0.0
* /mavros/distance_sensor/rangefinder_pub/field_of_view: 0.0
* /mavros/distance_sensor/rangefinder_pub/frame_id: lidar
* /mavros/distance_sensor/rangefinder_pub/id: 0
* /mavros/distance_sensor/rangefinder_pub/send_tf: False
* /mavros/distance_sensor/rangefinder_pub/sensor_position/x: 0.0
* /mavros/distance_sensor/rangefinder_pub/sensor_position/y: 0.0
* /mavros/distance_sensor/rangefinder_pub/sensor_position/z: -0.1
* /mavros/distance_sensor/rangefinder_sub/id: 1
* /mavros/distance_sensor/rangefinder_sub/orientation: PITCH_270
* /mavros/distance_sensor/rangefinder_sub/subscriber: True
* /mavros/fake_gps/eph: 2.0
* /mavros/fake_gps/epv: 2.0
* /mavros/fake_gps/fix_type: 3
* /mavros/fake_gps/geo_origin/alt: 99.9674829152
* /mavros/fake_gps/geo_origin/lat: 30.6197674
* /mavros/fake_gps/geo_origin/lon: -96.3414215
* /mavros/fake_gps/gps_rate: 5.0
* /mavros/fake_gps/mocap_transform: True
* /mavros/fake_gps/satellites_visible: 10
* /mavros/fake_gps/tf/child_frame_id: Quadrotor_pose
* /mavros/fake_gps/tf/frame_id: map
* /mavros/fake_gps/tf/listen: False
* /mavros/fake_gps/tf/rate_limit: 10.0
* /mavros/fake_gps/tf/send: False
* /mavros/fake_gps/use_mocap: True
* /mavros/fake_gps/use_vision: False
* /mavros/fcu_protocol: v2.0
* /mavros/fcu_url: /dev/ttyACM0:57600
* /mavros/gcs_url:
* /mavros/global_position/child_frame_id: base_link
* /mavros/global_position/frame_id: map
* /mavros/global_position/rot_covariance: 99999.0
* /mavros/global_position/tf/child_frame_id: base_link
* /mavros/global_position/tf/frame_id: map
* /mavros/global_position/tf/global_frame_id: earth
* /mavros/global_position/tf/send: False
* /mavros/global_position/use_relative_alt: True
* /mavros/image/frame_id: px4flow
* /mavros/imu/angular_velocity_stdev: 0.000349065850399
* /mavros/imu/frame_id: base_link
* /mavros/imu/linear_acceleration_stdev: 0.0003
* /mavros/imu/magnetic_stdev: 0.0
* /mavros/imu/orientation_stdev: 1.0
* /mavros/local_position/frame_id: map
* /mavros/local_position/tf/child_frame_id: base_link
* /mavros/local_position/tf/frame_id: map
* /mavros/local_position/tf/send: False
* /mavros/local_position/tf/send_fcu: False
* /mavros/mission/pull_after_gcs: True
* /mavros/mocap/use_pose: False
* /mavros/mocap/use_tf: True
* /mavros/odometry/estimator_type: 3
* /mavros/odometry/frame_tf/desired_frame: ned
* /mavros/plugin_blacklist: ['actuator_contro...
* /mavros/plugin_whitelist: ['fake_gps', 'vis...
* /mavros/px4flow/frame_id: px4flow
* /mavros/px4flow/ranger_fov: 0.118682389136
* /mavros/px4flow/ranger_max_range: 5.0
* /mavros/px4flow/ranger_min_range: 0.3
* /mavros/safety_area/p1/x: 1.0
* /mavros/safety_area/p1/y: 1.0
* /mavros/safety_area/p1/z: 1.0
* /mavros/safety_area/p2/x: -1.0
* /mavros/safety_area/p2/y: -1.0
* /mavros/safety_area/p2/z: -1.0
* /mavros/setpoint_accel/send_force: False
* /mavros/setpoint_attitude/reverse_thrust: False
* /mavros/setpoint_attitude/tf/child_frame_id: target_attitude
* /mavros/setpoint_attitude/tf/frame_id: map
* /mavros/setpoint_attitude/tf/listen: False
* /mavros/setpoint_attitude/tf/rate_limit: 50.0
* /mavros/setpoint_attitude/use_quaternion: False
* /mavros/setpoint_position/mav_frame: LOCAL_NED
* /mavros/setpoint_position/tf/child_frame_id: target_position
* /mavros/setpoint_position/tf/frame_id: map
* /mavros/setpoint_position/tf/listen: False
* /mavros/setpoint_position/tf/rate_limit: 50.0
* /mavros/setpoint_velocity/mav_frame: LOCAL_NED
* /mavros/startup_px4_usb_quirk: False
* /mavros/sys/disable_diag: False
* /mavros/sys/min_voltage: 10.0
* /mavros/target_component_id: 1
* /mavros/target_system_id: 1
* /mavros/tdr_radio/low_rssi: 40
* /mavros/time/time_ref_source: fcu
* /mavros/time/timesync_avg_alpha: 0.6
* /mavros/time/timesync_mode: NONE
* /mavros/vibration/frame_id: base_link
* /mavros/vision_pose/tf/child_frame_id: Quadrotor_pose
* /mavros/vision_pose/tf/frame_id: map
* /mavros/vision_pose/tf/listen: False
* /mavros/vision_pose/tf/rate_limit: 10.0
* /mavros/vision_speed/listen_twist: False
* /rosdistro: kinetic
* /rosversion: 1.12.12
NODES
/
mavros (mavros/mavros_node)
auto-starting new master
process[master]: started with pid [26930]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to af2a9730-1e56-11e8-86d2-001fc69c99e7
process[rosout-1]: started with pid [26943]
started core service [/rosout]
process[mavros-2]: started with pid [26961]
[ INFO] [1520021829.553095960]: FCU URL: /dev/ttyACM0:57600
[ INFO] [1520021829.554915572]: serial0: device: /dev/ttyACM0 @ 57600 bps
[ INFO] [1520021829.555552991]: GCS bridge disabled
[ INFO] [1520021829.567142748]: Plugin 3dr_radio loaded
[ INFO] [1520021829.569320914]: Plugin 3dr_radio initialized
[ INFO] [1520021829.569349388]: Plugin actuator_control blacklisted
[ INFO] [1520021829.571809744]: Plugin adsb loaded
[ INFO] [1520021829.575769648]: Plugin adsb initialized
[ INFO] [1520021829.575794473]: Plugin altitude blacklisted
[ INFO] [1520021829.575892237]: Plugin cam_imu_sync loaded
[ INFO] [1520021829.576626653]: Plugin cam_imu_sync initialized
[ INFO] [1520021829.576772377]: Plugin command loaded
[ INFO] [1520021829.582684066]: Plugin command initialized
[ INFO] [1520021829.582712464]: Plugin debug_value blacklisted
[ INFO] [1520021829.582886299]: Plugin distance_sensor loaded
[ INFO] [1520021829.592604674]: Plugin distance_sensor initialized
[ INFO] [1520021829.592748090]: Plugin fake_gps loaded
[ INFO] [1520021829.609103603]: Plugin fake_gps initialized
[ INFO] [1520021829.609128115]: Plugin ftp blacklisted
[ INFO] [1520021829.609259829]: Plugin global_position loaded
[ INFO] [1520021829.628580110]: Plugin global_position initialized
[ INFO] [1520021829.628612736]: Plugin hil blacklisted
[ INFO] [1520021829.628766952]: Plugin home_position loaded
[ INFO] [1520021829.633001155]: Plugin home_position initialized
[ INFO] [1520021829.633140461]: Plugin imu loaded
[ INFO] [1520021829.640533947]: Plugin imu initialized
[ INFO] [1520021829.640671494]: Plugin local_position loaded
[ INFO] [1520021829.646783905]: Plugin local_position initialized
[ INFO] [1520021829.646948100]: Plugin manual_control loaded
[ INFO] [1520021829.650807807]: Plugin manual_control initialized
[ INFO] [1520021829.650943083]: Plugin mocap_pose_estimate loaded
[ INFO] [1520021829.655518964]: Plugin mocap_pose_estimate initialized
[ INFO] [1520021829.655642737]: Plugin obstacle_distance loaded
[ INFO] [1520021829.659014223]: Plugin obstacle_distance initialized
[ INFO] [1520021829.659130864]: Plugin odom loaded
[ INFO] [1520021829.663794739]: Plugin odom initialized
[ INFO] [1520021829.664012214]: Plugin param loaded
[ INFO] [1520021829.667288846]: Plugin param initialized
[ INFO] [1520021829.667312025]: Plugin px4flow blacklisted
[ INFO] [1520021829.667423654]: Plugin rangefinder loaded
[ INFO] [1520021829.668137088]: Plugin rangefinder initialized
[ INFO] [1520021829.668297342]: Plugin rc_io loaded
[ INFO] [1520021829.672569622]: Plugin rc_io initialized
[ INFO] [1520021829.672594510]: Plugin safety_area blacklisted
[ INFO] [1520021829.672725799]: Plugin setpoint_accel loaded
[ INFO] [1520021829.676462007]: Plugin setpoint_accel initialized
[ INFO] [1520021829.676710869]: Plugin setpoint_attitude loaded
[ INFO] [1520021829.689281332]: Plugin setpoint_attitude initialized
[ INFO] [1520021829.689452779]: Plugin setpoint_position loaded
[ INFO] [1520021829.705853198]: Plugin setpoint_position initialized
[ INFO] [1520021829.706010896]: Plugin setpoint_raw loaded
[ INFO] [1520021829.716862466]: Plugin setpoint_raw initialized
[ INFO] [1520021829.717029302]: Plugin setpoint_velocity loaded
[ INFO] [1520021829.723754613]: Plugin setpoint_velocity initialized
[ INFO] [1520021829.723998780]: Plugin sys_status loaded
[ INFO] [1520021829.730640327]: Plugin sys_status initialized
[ INFO] [1520021829.730800888]: Plugin sys_time loaded
[ INFO] [1520021829.734651825]: TM: Timesync mode: NONE
[ INFO] [1520021829.735319038]: Plugin sys_time initialized
[ INFO] [1520021829.735450495]: Plugin vfr_hud loaded
[ INFO] [1520021829.736911489]: Plugin vfr_hud initialized
[ INFO] [1520021829.736935514]: Plugin vibration blacklisted
[ INFO] [1520021829.737033502]: Plugin vision_pose_estimate loaded
[ INFO] [1520021829.746346315]: Plugin vision_pose_estimate initialized
[ INFO] [1520021829.746515765]: Plugin vision_speed_estimate loaded
[ INFO] [1520021829.750239950]: Plugin vision_speed_estimate initialized
[ INFO] [1520021829.750419761]: Plugin waypoint loaded
[ INFO] [1520021829.755638602]: Plugin waypoint initialized
[ INFO] [1520021829.755726057]: Built-in SIMD instructions: SSE, SSE2
[ INFO] [1520021829.755751539]: Built-in MAVLink package version: 2018.2.2
[ INFO] [1520021829.755767668]: Known MAVLink dialects: common ardupilotmega ASLUAV autoquad matrixpilot paparazzi slugs standard uAvionix ualberta
[ INFO] [1520021829.755795346]: MAVROS started. MY ID 1.240, TARGET ID 1.1
[ INFO] [1520021829.849907257]: CON: Got HEARTBEAT, connected. FCU: ArduPilotMega / ArduCopter
[ INFO] [1520021830.072218261]: IMU: Raw IMU message used.
[ INFO] [1520021830.075098601]: RC_CHANNELS message detected!
[ WARN] [1520021830.075901836]: TM: Wrong FCU time.
[ WARN] [1520021830.572875238]: GP: No GPS fix
[ INFO] [1520021830.859501557]: VER: 1.1: Capabilities 0x0000000000003bcf
[ INFO] [1520021830.859610755]: VER: 1.1: Flight software: 030406ff (e707341bde6b667d8c965992)
[ INFO] [1520021830.859692086]: VER: 1.1: Middleware software: 00000000 (de6b667d8c965992)
[ INFO] [1520021830.859811288]: VER: 1.1: OS software: 00000000 (8c965992)
[ INFO] [1520021830.859894423]: VER: 1.1: Board hardware: 00000000
[ INFO] [1520021830.859991754]: VER: 1.1: VID/PID: 0000:0000
[ INFO] [1520021830.860091685]: VER: 1.1: UID: 0000000000000000
[ WARN] [1520021830.860457816]: CMD: Unexpected command 520, result 0
[ERROR] [1520021833.850124648]: FCU: PreArm: RC not calibrated
[ERROR] [1520021833.850282817]: FCU: PreArm: Compass offsets too high
[ INFO] [1520021839.850783561]: HP: requesting home position
[ INFO] [1520021839.853771718]: FCU: APM:Copter V3.4.6 (e707341b)
[ INFO] [1520021839.854040516]: FCU: PX4: de6b667d NuttX: 8c965992
[ INFO] [1520021839.854183948]: FCU: Frame: QUAD
[ INFO] [1520021839.854286161]: FCU: PX4v2 0034002F 31334705 39343031
[ INFO] [1520021840.469965330]: PR: parameters list received
[ INFO] [1520021844.857490824]: WP: mission received
[ INFO] [1520021849.851115121]: HP: requesting home position
[ INFO] [1520021859.850746668]: HP: requesting home position
[ WARN] [1520021860.684726116]: GP: No GPS fix
[ERROR] [1520021863.861805572]: FCU: PreArm: RC not calibrated
[ERROR] [1520021863.861953300]: FCU: PreArm: Compass offsets too high
header:
seq: 59
stamp:
secs: 1520021901
nsecs: 257080897
frame_id: ''
status:
-
level: 0
name: "mavros: FCU connection"
message: "connected"
hardware_id: "/dev/ttyACM0:57600"
values:
-
key: "Received packets:"
value: "6240"
-
key: "Dropped packets:"
value: "0"
-
key: "Buffer overruns:"
value: "0"
-
key: "Parse errors:"
value: "0"
-
key: "Rx sequence number:"
value: "211"
-
key: "Tx sequence number:"
value: "82"
-
key: "Rx total bytes:"
value: "182353"
-
key: "Tx total bytes:"
value: "1883"
-
key: "Rx speed:"
value: "2106.000000"
-
key: "Tx speed:"
value: "21.000000"
-
level: 2
name: "mavros: GPS"
message: "No satellites"
hardware_id: "/dev/ttyACM0:57600"
values:
-
key: "Satellites visible"
value: "0"
-
key: "Fix type"
value: "0"
-
key: "EPH (m)"
value: "0.00"
-
key: "EPV (m)"
value: "0.00"
-
level: 0
name: "mavros: Heartbeat"
message: "Normal"
hardware_id: "/dev/ttyACM0:57600"
values:
-
key: "Heartbeats since startup"
value: "72"
-
key: "Frequency (Hz)"
value: "1.037047"
-
key: "Vehicle type"
value: "Quadrotor"
-
key: "Autopilot type"
value: "ArduPilotMega / ArduCopter"
-
key: "Mode"
value: "STABILIZE"
-
key: "System status"
value: "Standby"
-
level: 0
name: "mavros: System"
message: "Normal"
hardware_id: "/dev/ttyACM0:57600"
values:
-
key: "Sensor present"
value: "0x0160FC0F"
-
key: "Sensor enabled"
value: "0x00601C0F"
-
key: "Sensor helth"
value: "0x0160FC0F"
-
key: "3D gyro"
value: "Ok"
-
key: "3D accelerometer"
value: "Ok"
-
key: "3D magnetometer"
value: "Ok"
-
key: "absolute pressure"
value: "Ok"
-
key: "3D angular rate control"
value: "Ok"
-
key: "attitude stabilization"
value: "Ok"
-
key: "yaw position"
value: "Ok"
-
key: "AHRS subsystem health"
value: "Ok"
-
key: "Terrain subsystem health"
value: "Ok"
-
key: "CPU Load (%)"
value: "30.1"
-
key: "Drop rate (%)"
value: "0.0"
-
key: "Errors comm"
value: "0"
-
key: "Errors count #1"
value: "0"
-
key: "Errors count #2"
value: "0"
-
key: "Errors count #3"
value: "0"
-
key: "Errors count #4"
value: "0"
-
level: 1
name: "mavros: Battery"
message: "Low voltage"
hardware_id: "/dev/ttyACM0:57600"
values:
-
key: "Voltage"
value: "0.00"
-
key: "Current"
value: "-0.0"
-
key: "Remaining"
value: "-1.0"
---
OK. I got messages from 1:1.
---
Received 1131 messages, from 1 addresses
sys:comp list of messages
1:1 0, 1, 2, 193, 152, 150, 24, 27, 29, 30, 33, 163, 36, 165, 42, 178, 182, 62, 65, 74, 77, 241, 116, 125
مرحبا SubMishMar ،
كنت أحاول أيضًا استخدام المكون الإضافي fake_gps لكنني لم أتمكن من معرفة كيفية استخدامه ولكن هذا ما فعلته ، ربما سيساعدك:
لقد أنشأت عقدة روس تأخذ بيانات الموقع من نظام Mocap (UWB في حالتي) وتحولها إلى قيم خطوط الطول والعرض. ثم قمت بنشر هذه القيم على موضوع / mavros / hil / gps. ثم قمت بتغيير معلمة GPS_TYPE في mavros إلى 14 (وهذا يجعل fcu يقبل بيانات GPS المزيفة). لقد تمكنت من تغذية بيانات المركز ، لكن لدي بعض المشاكل في تحقيق مركز جيد. أحاول تعديل القيم للحصول على نتيجة أفضل. أتمنى أن يساعدك هذا. سأكون ممتنًا إذا قام شخص ما بشرح كيفية استخدام مكوّن GPS المزيف بشكل صحيح :)
ملاحظة. يمكنك تغيير قيم lat0 و long0 إلى موقعك.
هذا هو رمز عقدة روس:
// adding x, y, z to long lat transform
// v3 - taking data from UWB and sending to APM
#include <ros/ros.h>
//#include <geometry_msgs/PoseStamped.h>
#include <cstdlib>
#include <mavros_msgs/HilGPS.h>
//#include <mavros_msgs/OverrideRCIn.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <array>
#include <geometry_msgs/PoseStamped.h>
std::vector <float> GPS = {0, 0}; // {long, lat}
float xPos = 0;
float yPos = 0;
float zPos = 0;
std::vector <float> CartToGPS (float x, float y, float z){ // x, y, z in [mm]
std::vector <float> GPS = {0, 0}; // {long, lat}
//Some constants
float pi = 3.14159265359; // pi
float alpha = pi / 2; // angle between x axis and North
float r = 6371000000; // mean radius of Earh in [mm]
float lat0 = (39.894470 * pi) / 180; // origin latitude
float long0 = (32.777973 * pi) / 180; // origin longitude
float dlat = (x * cos(alpha) + y * sin(alpha)) / r; // [rad]
float dlong = (x * sin(alpha) - y * cos(alpha)) / r; // [rad]
GPS = {((long0 + dlong) * 180) / pi, ((lat0 + dlat) * 180) / pi};
return GPS;
}
void poseMessageReceived(const geometry_msgs::PoseStamped &msg) // callback function for pose Message
{
xPos = msg.pose.position.x;
yPos = msg.pose.position.y;
zPos = msg.pose.position.z;
//ROS_INFO_STREAM("callback");
}
int main(int argc, char **argv) {
// if(argc<4){
// printf("Usage: rosrun send_pose position_sender lat long alt\n");
// return -1;
// }
//int rate = 10;
ros::init(argc, argv, "position_sender");
ros::NodeHandle n;
ros::Publisher pub = n.advertise<mavros_msgs::HilGPS>("mavros/hil/gps", 1);
ros::Subscriber subPose = n.subscribe("UWB_Pos",5,&poseMessageReceived);
ros::Rate rate(5);
while(ros::ok()){
mavros_msgs::HilGPS msg;
//msg.header.frame_id = "1";
msg.header.stamp=ros::Time::now();
// float x = double(atoi(argv[1]));
// float y = double(atoi(argv[2]));
// float z = double(atoi(argv[3]));
GPS = CartToGPS(xPos, yPos, zPos);
//msg.header.stamp=ros::Time::now();
msg.fix_type = 3;
msg.geo.longitude = GPS[0];
msg.geo.latitude = GPS[1];
msg.geo.altitude = zPos / 10000;
// msg.eph = 65535;
// msg.epv = 65535;
// msg.vel = 65535;
// msg.vn = 0;
// msg.ve = 0;
// msg.vd = 0;
// msg.cog = 65535;
// msg.satellites_visible = 255;
msg.eph = 2.0;
msg.epv = 2.0;
msg.vel = 65535;
msg.vn = 0;
msg.ve = 0;
msg.vd = 0;
msg.cog = 65535;
msg.satellites_visible = 255;
//ROS_INFO("Position data sent %f, %f, %f", msg.geo.latitude, msg.geo.longitude, msg.geo.altitude);
pub.publish(msg);
// rc_override_pub.publish(msg_override);
ros::spinOnce();
rate.sleep();
}
}
mellonUAV شكرا .. سأحاول هذا
mellonUAV لـ fake_gps
تأكد من أن APM تعالج HIL_GPS
الرسائل بشكل افتراضي دون الحاجة إلى تعيين أي معلمة أو نحو ذلك. أو ربما عليك فقط تعيين GPS_TYPE
إلى 14
كما قال SubMishMar . بالنسبة إلى VISION_POSITION_DELTA
لا أستطيع أن أقول الكثير ، فهذا يعتمد حقًا على نهاية الطيار الآلي. @ khancyr أي توصيات هنا؟
SubMishMar شفرتك محل تقدير ولكن fake_gps
يقوم بالتحويل الذي تحتاجه بالضبط. ما الذي لا تفهمه من استخدامه؟
أهلا! @ TSC21
أريد أن يعمل جهاز PX4 في وضع OFFBOARD أو POSCTL ، فكلاهما مقبول. لدينا نظام mocap OptiTrack. لقد قرأت العديد من المشكلات على github حول px4 و mavros و mocap.
لكن لا يزال لدي بعض الأسئلة:
شكرا جزيلا!
افضل الأمنيات!!
ذكر العديد من المستخدمين حزمة روس "مافروس" ، لكني أريد أن أعرف من أين أتت هذه "مافروس" ؟؟
إنها بالضبط حزمة الريبو التي تعلق عليها.
هل يأتي من أمر التثبيت "sudo apt-get install ros-kinetic-mavros" أم أنه يأتي من git clone؟
هذا يعتمد على ما إذا كنت تريد استخدام نسخة إصدار (من deb) أو نسخة أولية (من git استنساخ الريبو).
هل هناك فرق بين الاثنين؟
يعتمد ذلك على ما إذا كان إصدار الإصدار متزامنًا مع الإصدار الرئيسي من المنبع ، ولكن نظرًا لأن هذا مستمر دائمًا من حيث التطوير ، فعادةً ما يكون إصدار الإصدار وراء الإصدار الرئيسي الرئيسي.
في البداية ، لم أستخدم git one ، بعد "apt-get install" ، يمكن أن يعمل "roslaunch mavros px4.launch". لكن في الأسبوع الماضي حصلت على الكود المصدري عن طريق git clone ، وفي كود المصدر هذا ، يوجد أيضًا "px4.lunch" !!
نعم هذا طبيعي. نسخة الإصدار هي هذا الريبو الذي تم إصداره في مستودعات Ubuntu distro.
لذا ، أريد أن أعرف أثناء استخدامنا mavros للتحكم في PX4 (Set_Point_Position ، Set_Point_Attitude وما إلى ذلك ...) ، ما هي "mavros" التي يجب أن نستخدمها ؟؟
يجب أن يعمل أي منها.
أرى أيضًا بعض المستخدمين ذكروا المكون الإضافي "mocap_pose_estimate". قال العديد من المستخدمين أن هذا المكون الإضافي يمكنه تحويل البيانات من mocap إلى نظام الإحداثيات الذي يعمل على إصلاح PX4 ، لكنني لا أعرف كيفية استخدامه. ما هو هل هي عقدة؟ موضوع مثل "/ mavros / mocap / pose"؟ أو فقط بعض الوظائف التي يمكننا استخدامها مباشرة؟
ربما إذا ألقيت نظرة على شفرة المصدر تجد إجابتك. إنه في الأساس مكون إضافي يمكنك العثور عليه في mavros_extras
والذي يسمح لك بإرسال رسالة Mavlink ATT_POS_MOCAP
Mavlink التي تم تحليلها من عقدة لديك والتي تحصل على بيانات من نظام mocap الخاص بك. لدى MAVROS وظائف للتعامل مع تحويل الإطار ، لذلك لا يقتصر الأمر على هذا المكون الإضافي.
لذا ، أريد أن أعرف ما هو وكيف أستخدمه؟ كيف يمكنني إضافة هذا "البرنامج المساعد" إلى مشروعي الخاص ؟؟
هذا ليس مكونًا إضافيًا تقوم بتوصيله بمشروعك الخاص لأن هذا مقترن بإحكام بـ MAVROS. إذا كنت تريد استخدام ما يسمح به هذا المكون الإضافي ، فما عليك سوى استخدام MAVROS وإقرانه بمشروعك.
التعليق الأكثر فائدة
مرحبا SubMishMar ،
كنت أحاول أيضًا استخدام المكون الإضافي fake_gps لكنني لم أتمكن من معرفة كيفية استخدامه ولكن هذا ما فعلته ، ربما سيساعدك:
لقد أنشأت عقدة روس تأخذ بيانات الموقع من نظام Mocap (UWB في حالتي) وتحولها إلى قيم خطوط الطول والعرض. ثم قمت بنشر هذه القيم على موضوع / mavros / hil / gps. ثم قمت بتغيير معلمة GPS_TYPE في mavros إلى 14 (وهذا يجعل fcu يقبل بيانات GPS المزيفة). لقد تمكنت من تغذية بيانات المركز ، لكن لدي بعض المشاكل في تحقيق مركز جيد. أحاول تعديل القيم للحصول على نتيجة أفضل. أتمنى أن يساعدك هذا. سأكون ممتنًا إذا قام شخص ما بشرح كيفية استخدام مكوّن GPS المزيف بشكل صحيح :)
ملاحظة. يمكنك تغيير قيم lat0 و long0 إلى موقعك.
هذا هو رمز عقدة روس: