2019-10-01 23:00
The serial port read messages are warnings. The others are listed as INFO. The process does not crash so I guess I will simply ignore it. I do send neutral PWM values if no valid cmd-vel messages after the failsafe interval of 1/2 second.

2019-10-04 15:53
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-10-04 16:40
Notes from the lawn tractor meeting: 11:15:07 From Al Jones : servo mount: https://www.aliexpress.com/item/32810561810.html?spm=a2g0o.cart.0.0.2d163c0013McxY&mp=1 11:30:07 From Matt Droter : ROS standard for Coordinate Conventions http://www.ros.org/reps/rep-0103.html 11:30:21 From Matt Droter : Yaw is zero when pointing East 11:37:43 From Jeff Sampson : DC1224V http://180kg.cm /110kg.cm Servo Motor High Power Torque Robot Alloy ARM Plate https://ebay.us/vA3vrs

2019-10-04 18:21
Recording from the lawn tractor meeting: https://youtu.be/2uGeTrIQ798

2019-10-05 12:41
I have started testing transmission control. Seems to be a problem getting actual speed to be near target speed.

2019-10-11 15:11
I found an autonomous lawn mower on SparkFun: https://www.sparkfun.com/news/3105

2019-10-11 15:51
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-10-11 16:55
Notes from the lawn tractor meeting: 11:23:13 From Matt Droter : Arduino NANO Screw Terminal Expansion Board https://www.mpja.com/Arduino-NANO-Screw-Terminal-Expansion-Board/productinfo/32796+MP 11:34:44 From Jeff Sampson : This is the board I am thinking about using to adapt big wires to small wires. 11:34:50 From Jeff Sampson : https://www.mpja.com/Arduino-UNO-Breakout-Screw-Shield/productinfo/32799+MP

2019-10-11 19:57
This board would have worked perfectly for my encoders. I have 2 5-pin single inline connector that would fit side-by-side. http://www.gravitech.us/10mahebrbo.html



2019-10-11 20:20
These also work well for connecting automotive size wires together. A guy at work showed us these. I think he got them at a local auto parts store. https://www.superbrightleds.com/moreinfo/wire-connectors/28-12-ga-lever-lock-quick-connect-terminal-blocks/1372/


2019-10-12 02:35
Recording from the lawn tractor meeting: https://youtu.be/kOZNg8xksuE

2019-10-12 17:08
Currently cmd_vel/linear/x and teleop/linear/x at maxing out at 1.0 from the joystick. I want it to max at 1.5 (i.e. 1.5 m/s). Thoughts on where that setting is at? the yaml file does not seem to be the place . @??

2019-10-12 17:33
Since move_base/cmd_vel is -0.3 to 0.3 and that gets mapped to +/- 1.0 at new_angle = translate(cmd_angle.z, -0.3, 0.3, -1, 1) in cmd_vel_mux I'm sorta thinking I would have to make changes in the super_servo teensy code to have 1.0 generate a pwm value that will deliver 1.5 m/s

2019-10-12 18:22
Hi Al that would work. It might be better to make the changes in the launch file. That way it can be easily changed. I added them to the variables to the parameter server https://github.com/ros-agriculture/tractor_teleop/blob/master/launch/drive_teleop.launch#L21 Changes to the drive_teleop.py node https://github.com/ros-agriculture/tractor_teleop/blob/master/src/tractor_teleop/drive_teleop.py#L32

2019-10-12 18:22
OK, I now have a wi-fi controlled lawn tractor. https://1drv.ms/v/s!AlSRhxzgYnAlhKU3wayOXuitDSLG6Q?e=ndOSBL You might have to download the video to watch it.

2019-10-12 18:27
Awesome Al! Looks great

2019-10-13 18:00
Anyone know the C++ statements to access a parameter? The four tries below did not compile. Error messages are along the lines of ros::param' has not been declared. Trying #include "ros/param.h" did not work. `ros::param::get("/steering_max_power", max_steer_eff);` `void ros::param::get("/steering_max_power", max_steer_eff);` `bool ros::param::get("/steering_max_power", max_steer_eff);` `nh.getParam("/steering_max_power", max_steer_eff);` This was the best example I could find. https://roboticsbackend.com/get-set-ros-params-rospy-roscpp/ Link to code: https://drive.google.com/open?id=1mABDJdsW4P5vZlLfyPzeuNgOX-Pcc54q

2019-10-13 18:08
Can you post the code you are using...

2019-10-13 18:09
Might be a cmake issue.

2019-10-13 18:09
Ah.. During compile... Yeah.. Where is that library

2019-10-13 18:12
I would compare cmakelists.txt files between a project using Params and yours.

2019-10-13 19:03
If you are working on the Teensy to get the parameters through rosserial there is an example here http://wiki.ros.org/rosserial/Overview/Parameters

2019-10-13 21:36
Tried the example. Still no joy. Will simplify code down to a simple test. I did find this test https://github.com/vmatos/rosserial/blob/getparam/rosserial_test/src/get_param.cpp , but the format he used `nh.getParam("/steering_max_power", max_steer_eff);` did not compile cleaning

2019-10-13 22:26
:disappointed: Code: `#include "ros.h"` `ros::NodeHandle nh;` `int main(void) {` ` while (!nh.connected()) {` ` nh.spinOnce();` ` }` ` float pid_constants;` ` nh.getParam("~pid", pid_constants,1);` `}` Error: `Compiling .pioenvs/steer_motor/src/param_example.cpp.o` `src/param_example.cpp: In function 'int main()':` `src/param_example.cpp:8:37: error: no matching function for call to 'ros::NodeHandle_<ArduinoHardware>::getParam(const char [5], float&, int)'` `nh.getParam("~pid", pid_constants,1);` `^` `In file included from lib/ros_lib/ros.h:38:0,` `from src/param_example.cpp:1:` `lib/ros_lib/ros/node_handle.h:610:8: note: candidate: bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, int*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]` `bool getParam(const char* name, int* param, int length = 1, int timeout = 1000)` `^` `lib/ros_lib/ros/node_handle.h:610:8: note: no known conversion for argument 2 from 'float' to 'int*'` `lib/ros_lib/ros/node_handle.h:628:8: note: candidate: bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, float*, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]` `bool getParam(const char* name, float* param, int length = 1, int timeout = 1000)` `^` `lib/ros_lib/ros/node_handle.h:628:8: note: no known conversion for argument 2 from 'float' to 'float*'` `lib/ros_lib/ros/node_handle.h:646:8: note: candidate: bool ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::getParam(const char*, char**, int, int) [with Hardware = ArduinoHardware; int MAX_SUBSCRIBERS = 25; int MAX_PUBLISHERS = 25; int INPUT_SIZE = 512; int OUTPUT_SIZE = 512]` `bool getParam(const char* name, char** param, int length = 1, int timeout = 1000)` `^` `lib/ros_lib/ros/node_handle.h:646:8: note: no known conversion for argument 2 from 'float' to 'char**'` `Compiling .pioenvs/steer_motor/FrameworkArduino/keylayouts.c.o` `Compiling .pioenvs/steer_motor/FrameworkArduino/main.cpp.o` `*** [.pioenvs/steer_motor/src/param_example.cpp.o] Error 1` `Compiling .pioenvs/steer_motor/FrameworkArduino/math_helper.c.o`

2019-10-13 22:55
Should `nh.getParam("~pid", pid_constants,1);` be `nh.getParam("~pid", pid_constants);` ?

2019-10-13 23:30
This works.... thanks all... `#include "ros.h"` `ros::NodeHandle nh;` `char buffer[250];` `float pid_constants[3];` `void setup(){` ` while (!nh.connected()) {nh.spinOnce();}` `}` `void loop(){` ` if (! nh.getParam("/pid", pid_constants,3)){ ` ` pid_constants[0]=0.4;` ` pid_constants[1]=0.5;` ` pid_constants[2]=0.6; ` ` } ` ` nh.spinOnce();` ` sprintf (buffer, "param example - pid_constants[0]:%f pid_constants[1]:%f pid_constants[2]:%f", pid_constants[0], pid_constants[1], pid_constants[2]);` ` nh.loginfo(buffer);` ` delay(2000);` `}`

2019-10-13 23:31
:thumbsup:

2019-10-14 00:16
Awesome! I updated the ROS wiki with your changes. Hopefully, it will make it easier for the next person. http://wiki.ros.org/rosserial/Overview/Parameters

2019-10-18 15:56
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org


2019-10-22 19:26
Recording from the lawn tractor meeting: https://youtu.be/nIXZf1wcnek

2019-10-24 02:54
I played with my USB/serial problem some more. I moved my output from the debug interface to a dedicated UART. I connected that to a FTDI serial adapter and it appeared to be working under windows and Tera Term. I moved it back to the Raspberry Pi and it was still acting weird. After playing around I decided to remove the cheap USB hub I was using. That seemed to fix the problem. I switched the eval board back to the debug interface and it still seemed to be working (mostly). Now the eval board randomly resets and I get a dmesg error message about the USB port resetting. But I can't allow that. So I need to track that down. Maybe the debug interface is seeing a USB problem and it resets the CPU on the eval board. So I might switch back to the alternate UART interface to see if that makes a difference.

2019-10-24 23:30
So tonight I added a counter to track the "odom reset" function I have from the remote control. If that activates it would cause the same effect. It does not seem to be counting so that is not the problem. Then I moved back to the Raspberry Pi and decided to connect the eval board directly to one of the four root USB ports. I used two more for the mouse and keyboard. The two uBlox boards and the laser got disconnected completely. It appears to be working and the odomentry numbers do not reset and I am not getting errors in the dmesg window. It has been running for about half an hour. So it "may be" that my Ubuntu Mate on a Raspberry Pi does not like my USB hub. I'll go play some more.

2019-10-25 00:21
I moved everything around and now I have my laser scanner on the USB hub. The two uBlox F9P receivers and the STM Eval board are on the base ports. I started up everything except the ntrip corrections client. It all seems to be working except the laser scanner gets random USB errors, but it continues to operate. (The red messages at the bottom of the screen) So again, it points to Ubuntu Mate on Raspberry Pi does not like USB hubs. This is all running on a Raspberry Pi 3.

2019-10-25 15:53
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-10-25 16:50
Notes from the lawn tractor meeting: 11:24:48 From Jeff Sampson : Video of last mile delivery robot: https://twitter.com/l5labs/status/1178751942274584576 @ 1:56 11:37:13 From Jeff Sampson : ROS Melodic on Raspberry Pi 4: https://www.seeedstudio.com/blog/2019/08/01/installing-ros-melodic-on-raspberry-pi-4-and-rplidar-a1m8/

2019-10-26 00:53
Recording from the lawn tractor meeting: https://youtu.be/qWJapKnwrKM

2019-10-26 14:30
New angle sensor holder installed. Outside doing testing before the rain starts today.

2019-10-26 19:24
Raining outside so working on GPS. I can use OEM software in Windows to see NMEA messages and get RTK fix, but cannot see the NMEA messages when using $ cat /dev/ttyUSB0 in Ubuntu. Checking drivers and baud rates... :disappointed:

2019-10-26 20:06
Permissions issue....resolved

2019-10-26 20:21
Cool. Able to set GPS data on ROS topic.

2019-10-26 20:38
Sweet!

2019-10-27 08:43
@ Is your position covariance correct? To mee it looks like you have only values for X, X velocity and acceleration in Z?

2019-10-28 12:35
@ I?m not educated enough to know how to reply. I am only sending a couple of NMEA sentences from the gps. Where should I start to debug?

2019-10-28 12:57
the position_covariance will most likely be used in a package in which you will do sensor fusion (e.g. robot_localization). When you are at a stage to implement it I'd start with just fusing the position from the GPS as the first step of debugging - if your odometry output is then updated correctly then what I raised is most possibly a non-issue. If you see it however only updaing in x direction and not y and maybe jumping a bit up and down then you need to modify the position_covariance in your node. Most probably you would fill in the first 2 or 3 values (x, y, z)

2019-10-28 17:48
Hi, I'm Juan Eduardo Riva from Argentina. Matt came here to assemble the "pochito project" which is an implementation of the work of the ROS Agriculture community. Unfortunately I do not find it easy to use slack, but as I see that it is the channel that you all use most to work, I will have to improve the use of it.

2019-10-28 17:50
I hope to start contributing to the community a part of everything I received. You are all very generous with your work and I want to thank you very much for what you have done. See you later.

2019-10-28 22:16
bienvenidos

2019-10-28 22:51
Gracias Al

2019-10-29 01:23
Great stuff! Love following along!

2019-10-29 18:48

2019-11-01 15:50
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-11-02 00:31

2019-11-02 01:12
Recording from the lawn tractor meeting: https://youtu.be/GgnkazBuA-w

2019-11-02 09:45
Hi @ , question about your gps setup. You?re using both a reference and a rover unit on the rover? Then streaming ntrip data to the reference? How?s the accuracy? I?ve been fighting the urge to buy those f9p receivers. Ta, Ben

2019-11-02 15:21
Yes, that description sounds accurate. I tell people that I get 1-2 cm accuracy if I am not moving. I don't know what it is when I am moving. Here is a video showing accuracy: https://www.youtube.com/watch?v=3tQjIHFcJVg Here is his write-up: http://deepsouthrobotics.com/2019/06/03/the-taming-of-the-u-blox-zed-f9p/ The moving baseline heading seems to be repeatable within a couple of tenths of a degree if I am not moving. I have two receivers so I can test if I really need moving baseline heading (which doubles the cost). The alternative is to use the computed Course Over Ground output which is only usable when you are moving.

2019-11-07 00:20
I was going to reassemble my mini-tractor. But I thought this would be a good time to solder on a feedback wire on the giant R/C servo. I soldered the wire to the pin conveniently labeled "feedback". Note, if you take one of these apart you will notice it has spacers between the board and the frame. This one has red fiber washers. Another one has oversized nuts. So don't lose them when you take it apart. When it was back together I checked it with a volt meter. It goes from 1.36 volts to 3.65 volts in the approximate 180 degrees of rotation. And it is 2.54 volts around the center. I didn't get it put back together since I left the connecting bolt at home. But I do notice that the existing code doesn't do quite full travel and the centering is off. So I will have to play with that.

2019-11-07 02:18
I got up to leave. I noticed that the bolt that I need is stuck through the frame (so I wouldn't lose it). After much tedious screwing around I got it back together. In the process I sat it up on its back so I could get to the front end. After it was all back together I fired it up for a test drive. Nothing... Neither motor would budge when I moved a joystick. About 10 minutes later I realized that flipping it up on its back had pushed in the eStop button. That fixed it. So again I'm assured my eStop buttons work. The new servo works. Its real noisy, but very responsive. I'm thinking the noise is because they have the gain set high and the motor buzzes/whines as it tracks the position. I'm sure the metal plate it is bolted to also amplifies the noise. So the drive motor is silent and the steering screams. Oh well... If I had a gas engine I wouldn't be able to hear the steering. :slightly_smiling_face: Tomorrow I will try to get the span and the centering cleaned up.

2019-11-08 16:51
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-11-08 21:52
I said in the meeting today that I could not get correction data out of a base laptop into a Swiftnav radio and out of a second Swiftnav radio and then into my uBlox F9P GNSS receiver. Well it turns out that I can. I was relying on a screen that shows incoming RTCM messages. For some reason that screen sometimes works and sometimes does not. When I was getting errors a couple of days ago I was seeing messages on that screen. Yesterday and today I don't see message on that screen. But I am getting a FLOAT solution when the correction data is connected. It does not get a FIX since the robot is in the lunchroom by a window. This also means that I will not run my NTRIP ROS node. Since I lost my cell phone connection I don't have direct Internet access on the robot. So I am not pushing correction data through ROS topics and through the F9P USB cable. This radio method pushes corrections directly into UART1 on the F9P. I can have a laptop (probably in my car) connected to an NTRIP server and putting correction data on a serial port. That plugs into a Swiftnav radio transceiver. I turned the transmit power up from 100mw to 500mw. That should light up my entire neighborhood at home. Or let let me drive all the way around the building at work. I will get back to you on that. So now back to reconnecting everything to the Raspberry Pi and getting it talking in ROS. Then I can start driving around and making log files. I also made some conclusions on my RS232/USB adapters. I have some with a ch341 chipset. They don't work correctly on Linux, but they do work on Windows 10. All of the rest of them have the pl2303 chip set. They appear to work correctly on Linux, but do not work on Windows 10.

2019-11-09 01:06
Recording from the lawn tractor meeting: https://youtu.be/QEmjFp3ymuw

2019-11-15 01:44
I took the last two days off work. I can send RTCM correction data over the swiftnav radios and the uBlox RTK and moving baseline seem to be working. I moved on to attaching a solid state drive to a USB port. I wasted most of a day trying to get that to mount as a repeatable name that I can access from the command line. I moved on to bag files. I can start a rosbag record and have it write to the external drive. But I need a way to do an orderly shutdown when I shutdown the Raspberry Pi. (through the new pushbutton I added). No matter what I did I could not get my "kill" script to run when I shutdown. After about half a day I realized I was editing the the wrong file. Then the kill script would run. But it would not execute the rosnode command I needed. Turns out the python script that watches the shutdown pushbutton is owned by root. Root doesn't know about ROS because it doesn't have the same environment variables. So I switched to a more brute force approach. I used "kill -2 `pidof record`" which does the job. Now my bag files are shutdown correctly. Now on to get a launch file to start on boot up. I will start here: https://blog.roverrobotics.com/how-to-run-ros-on-startup-bootup/

2019-11-15 07:27
You can check robot_upstart: https://github.com/clearpathrobotics/robot_upstart so far it was working quite well for me to start a launchfiles at boot

2019-11-15 16:01
I will look over the robot_upstart. The solution from Rover Robotics seemed fairly permanent. I want to be able to switch back and forth. Do you switch between auto start and manual start on your systems? And does it work well to do that? But it was late last night and I was tired of fighting with Linux so I didn't look at the Rover Robotics very hard.

2019-11-15 16:53
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-11-15 19:55
We switch between the standard install and local on production machines via: `systemctl stop <name-of-your-robot>.service` and then source the local copy and manually roslaunch the new stuff.

2019-11-15 19:56
Also when you use the robot up start stuff with systemd launch services, you can set an environment file and drop ENV variables in there, which is a plus

2019-11-15 20:04
This all sounds very promising. I'll have to try it out. But I'm guessing it will take a day or two for me to get it loaded and make it work. So I may just do it manually this weekend and see if I can get past the next step.

2019-11-15 20:10
I just checked. CAN transceivers appear to have the correct polarity to work with logic level UARTs. So I may try using those to do a multi-drop asynchronous serial bus. The SN65HVD230 is a 3.3V part. And I just ordered some of the Microchip MCP2551 parts which are 5V. So those two types should cover both the 5V Arduinos and the 3.3V ARM boards that I have. I should use different colored wire to differentiate between the "real" CAN bus and my "special" bus. At least around here they use yellow/green for a CAN bus.

2019-11-15 20:19
awesome, don?t get stuck! post if you have any issues, i know a bit about systemd and start scripts. Our custom linux distro runs a small ubuntu, newest kernel (with realsense kernal patches, doh), and then basically our vpn, sshd, and ROS. No X Windows or anything else. Very basic!

2019-11-15 20:54
Recording from the lawn tractor meeting: https://youtu.be/u-VT8SRnzgE

2019-11-19 16:16
it should be blinking red and green right?

2019-11-19 16:16
i just flashed it to pi4

2019-11-19 16:16
and it seems to just be stting....like, not alive

2019-11-20 01:54
pi4 image isn't available yet...

2019-11-22 16:51
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-11-22 21:17
@ Hey I just noticed something. Those "servo plates" from China do not fit on the Servo200. But the Servo200 plate does fit on the other China servos. Sorry I didn't check before I told you where to get them.

2019-11-23 00:41
Notes from the meeting: 00:40:35 Matt Droter : ESP32 Cam WiFi&Bluetooth Camera Module Development Board with OV2640 Camera M... https://www.amazon.com/dp/B07Q56LGG6/ref=cm_sw_r_tw_dp_U_x_IEb2Db3J4JR6J 00:41:53 Matt Droter : Milton S-466 Tire Valve Adapter Kit Milton Industries https://www.amazon.com/dp/B000J1SQXI/ref=cm_sw_r_tw_dp_U_x_Oxb2Db4NRDQF1 00:50:53 Al Jones: Verizon Jetpack https://www.verizonwireless.com/internet-devices/jetpack-mifi-6620l/

2019-11-23 00:53
Thanks for the update. Surprised how hard it is to find those plates.

2019-11-23 01:41
Recording from the lawn tractor meeting: https://youtu.be/Xwc1GZ1nFTM

2019-11-23 03:34
As discussed in the weekly meeting... Here is a random image of the statistical position as you move forward. The further you move the larger the predicted location becomes. http://rpg.ifi.uzh.ch/img/papers/RAL18_Zhang_teaser.png

2019-11-25 20:03
Here is the picture of my test course I was trying to find during the meeting. The red line shows half of the block with the left side being the alley.

2019-11-26 17:05
Still chipping away at wiring my electronics box. Waiting on a couple of parts now. Namely a Powerwerx PanelPole, Panel Mount for 12V in and 12V out to the steering motor and RS232->FTDI->USB for GPS data.

2019-12-03 14:46
@ this is a nice writeup for localization along with examples.

2019-12-06 16:53
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-12-06 17:44
Notes from the lawn tractor meeting: 09:12:25 From Jeff Sampson : Tiny camera: https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=Android+And+PC+Endoscope&_sacat=0 09:39:04 From Matt Droter : RTK correction https://www.unavco.org/instrumentation/networks/status/all/realtime

2019-12-06 18:03
Hello guys, sorry i cannot stay in the meeting. To perform the odometry data the information of the rotation of the wheels can useful with the imu and the gps data. With that you can improve the odometry .See http://wiki.ros.org/ros_arduino_bridge and https://github.com/hbrobotics/ros_arduino_bridge

2019-12-06 18:03
i use this in my project

2019-12-06 18:05
i obtain the odometry of two e-bike wheels (with the hall sensors of the wheels)

2019-12-06 18:10
i use mpu6050, u-block gps and the encoders information

2019-12-06 18:13
i'm do some test and works fine

2019-12-06 18:28
That is a nice setup. Are you happy with speed and power of the e-bike wheels you are using?

2019-12-06 18:40
Yes, i'm do some tests and with 350W 36 volt e-bike wheels i obtain 10km/h (i don't need more) and move a payload of 150kg

2019-12-06 18:41
for our application are good numbers..

2019-12-06 18:42
the advantage is the controllers, all the electronic are integrated and the wheels hall sensor can used to measure the rotation and speed

2019-12-06 18:43
here in argentina it's easy obtain e-bike wheels from 200W to 1000W with the controllers

2019-12-06 19:09
I just ordered a couple of these. They were cheap and they claim to have a focal length of 4cm to infinity. The one I showed (from work) claims to have a focal length of 3cm to 8cm. https://www.ebay.com/itm/371385089438

2019-12-07 16:23
Recording from the lawn tractor meeting: https://youtu.be/TiuEKwCwAxU

2019-12-09 18:54
I have corrections data flowing from my base to rover. The physical topology is GPS -> Development Board RS232 port -> RS232/TTL converter -> 3DR radio and then on the receiving side, the same setup in reverse. I was having issues and had to swap out these recently purchased radios (<https://www.amazon.com/gp/product/B075D8TX63/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1>) for an older set that I had lying around. The ?new? version kept going into firmware update mode when I applied 5V power.  Something I have not spent time on is figuring out the ethernet IP communication on my GPS boards to avoid having dedicated radios for correction data. @, I will attached the pdf I received from SinoGNSS. My Based is currently outputting these statements on COM1: RTCM1004B, RTCM1006B, RTCM1008B, RTCM1012B, RTCM1033B.  My next step is to craft a free-standing Base station. My inspiration is something that looks like this with a battery box on the bottom, solar panel and box for electronics plus antennas.  Wish me luck.

2019-12-09 18:54
ethernet configuration file

2019-12-09 18:58
I'll look it over tonight.

2019-12-13 16:50
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-12-16 00:15
Hi, I'm working in something similar.. Maybe the photo setup is not the best.. Here in Argentina it gets windy and panel tend to behave like "sails", animal are a problem, hummans too and in my experience you always need to think in the antenas and the line of view.. So, when I find some time y will go with this project.. By now I'm using a canon tripod for the antena and a plastic box. Good luck..:+1:

2019-12-16 00:41
Hello, I find myself stuck with some problems on the tractor, and I could really use a little help and guidance. Since Matt came to Argentina and with his help, I started this journey in ROS, ROS-A and many more things than I imagined, in that journey I learned a lot; but I still have too much left and that is why I am quite lost. I may find your advice in the circuit that I should follow to search for errors and the steps to follow to find the solutions very useful. I honestly don't feel very much like Slack and I don't know how to expose such a long topic. I have been posting and deleting the post for a week because I don't like how it looks and I ended up putting together a PDF, which I think makes it easier to explain myself. Well, I would appreciate it if you could see the attachment. Thanks in advance .. Regards Juan Riva ..

2019-12-16 11:43
Hello Juan, i from Argentina too. Saludos! I see the pdf tha you sent, Did you check the urdf file, the error mention a wrong definition in the TF transfomr, with Nan values.

2019-12-16 14:49
Thanks. I will see it tonight at the farm. Muchas gracias, no sé si estás al tanto del proyecto https://github.com/rje1974/Proyecto-Pochito recién estoy comenzando con ROS, soy medio corto y me vendría bien una orientación. Saludos desde Trenque Lauquen..

2019-12-16 18:36
NICE...!!!

2019-12-18 18:32
Can you run $rostopic echo /odom If your /heading topic has NAN's it will cause an error with the TF

2019-12-18 21:02
This is rostopic info /odom and rostopic echo /odom , there is nothing publish there..

2019-12-18 21:04
But..... Here you can see that the same numbers published by the topic /gps_odom are those in the error..

2019-12-18 21:04
@ what do you think..?

2019-12-18 22:14
In the bottom right-hand window with the TF errors. Do you know which node is throwing this error? If not you can start each node in the launch file by hand until you find it. There might be another way to see which node it is.

2019-12-18 22:29
Thanks, I will try turning on and off the nodes

2019-12-19 16:43
Is the TF error continuous or does it stop when you get accurate headiing?

2019-12-19 16:54
Continuous

2019-12-19 21:42
Have you plotted your TF tree while your system is up? You can see them by running: $ rosrun tf view_frames && evince frames.pdf http://wiki.ros.org/tf

2019-12-20 16:51
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2019-12-20 18:54
URDF

2019-12-20 18:57
Later i will post it..I forgot to take de sreenshot.. Bye..

2019-12-21 17:19
Recording from the lawn tractor meeting: https://youtu.be/dWHoIJrZajg

2019-12-21 22:34
All is here.. The tree does not look good..

2019-12-25 23:28
Draft of outdoor stand for WiFi, base station for corrections and solar panel for power. Just started.

2019-12-30 18:32
Yes the gps_to_pose publishes the transform from odom to base_link frame. It looks like there is a problem with the odometry topic

2019-12-30 18:51
gps_to_pose needs two topics to make the odometry message. It need a gps message and heading message. The topic names are set in the the above launch file on line 12 and line 27. If you echo /tcpfix and /heading you can see if the input data is correct.

2019-12-30 18:53
Your gps will only work if the antenna can see the sky with enough satellites. The heading message is only published when your tractor is moving. At startup the heading message will contain NAN's.

2019-12-30 19:05
```#!/usr/bin/env python import rospy from math import atan2, isnan, pi, radians from nav_msgs.msg import Odometry from geometry_msgs.msg import TwistStamped, Quaternion, QuaternionStamped from tf.transformations import euler_from_quaternion, quaternion_from_euler from sensor_msgs.msg import Imu from std_msgs.msg import Float64 # RMC Bearing Heading of course is measured from the y-axis, positive CW. # Auto calculate dec https://github.com/clearpathrobotics/declination # Need def convert_deg_to_rads(degs): return radians(degs) class HeadingCalibration(): def __init__(self): self.current_heading = QuaternionStamped() self.best_heading = QuaternionStamped() self.vel_sub = rospy.Subscriber('vel', TwistStamped, self.vel_callback) self.head_pub = rospy.Publisher('heading', QuaternionStamped, queue_size=1) self.VelYaw = 0.0 self.heading_last_good = QuaternionStamped() def yaw_to_degree(self, yaw): # Radians to Degrees yaw *= 180.0 / pi # Ensure yaw stays between 0 and 360 if yaw < 0: yaw += 360.0 return yaw def vel_callback(self, msg): y = float(msg.twist.linear.y) x = float(msg.twist.linear.x) # check for nan values if isnan(x) or isnan(y): # If vel is nan then use last good heading self.current_heading = self.heading_last_good else: yaw = float(atan2(y,x)) #yaw += 1.5708 yaw = self.yaw_to_degree(yaw) self.VelYaw = yaw # Degrees to Radians yaw *= pi/180.0 self.current_heading.header.stamp = rospy.get_rostime() self.current_heading.header.frame_id = 'gps' q = quaternion_from_euler(0, 0, yaw) self.current_heading.quaternion.x = q[0] self.current_heading.quaternion.y = q[1] self.current_heading.quaternion.z = q[2] self.current_heading.quaternion.w = q[3] self.heading_last_good = self.current_heading def publish_heading(self): rate = rospy.Rate(5) while not rospy.is_shutdown(): self.head_pub.publish(self.current_heading) rate.sleep() rospy.spin() if __name__ == '__main__': rospy.init_node('heading_compare_node') heading_object = HeadingCalibration() try: heading_object.publish_heading() except rospy.ROSInterruptException: pass```

2019-12-30 19:06
The above script reads in the /vel topic from your gps and calculates the heading. Then it is published on /heading topic.

2019-12-30 21:36
Thanks

2020-01-03 16:51
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2020-01-03 17:57
Notes from the lawn tractor meeting: 09:41:14 From Matt Droter : MQTT Tutorial - http://www.steves-internet-guide.com/into-mqtt-python-client/ ROS MQTT Bridge - http://wiki.ros.org/mqtt_bridge

2020-01-03 23:56
Recording from the lawn tractor meeting: https://youtu.be/SBh0dvN__T0

2020-01-08 15:42
has joined #lawntractor2020

2020-01-10 16:23
Reminder, Lawn tractor meeting at 12 noon EST. http://meet.ros-a.org

2020-01-10 23:32
Recording from the lawn tractor meeting: https://youtu.be/UM5qLcmkoUw

2020-01-17 18:03
Notes from the lawn tractor meeting: 09:04:56 From Matt Droter : Oculus Prime - https://robots.ros.org/oculus-prime/ 09:08:19 From Al Jones : Rodney Brooks http://rodneybrooks.com/ 09:09:47 From Matt Droter : https://sylabs.io/singularity/

2020-01-17 22:19
Recording from the lawn tractor meeting: https://youtu.be/BpA8X4iPeLo

2020-01-18 01:55
I had another thought. I think you want to create a tcp server (say port 9000) as the web interface for configuration. Then create another one (say port 9001) as the correction data. Then if you want to connect the NMEA messages to ROS through ethernet you can create a third port (say port 9003) as the connection for NMEA messages for ROS. Just keep that in mind as you play around. I.e., you may not want to put all of the data on the same port.

2020-01-18 11:05
Hi @ have you considered to use MQTT instead of the old client server approach. MQTT works also with topics like ROS but it is a lightweight framework (about 100's of kb). http://www.steves-internet-guide.com/mqtt/

2020-01-18 16:35
Thanks for the suggestion. But no, I have never looked at MQTT. In this case Al is trying replace a length of wire on serial ports between his two GNSS receivers. This is to get correction data from the base unit and sent it to the rover unit. Or he currently has 3DR radios on the serial ports to send the data. But he doesn't really have the option of loading MQTT (or anything else) onto the GNNS receiver. We discussed this at some length on the video above as we tried to figure out how to configure it.

2020-01-18 16:37
in that case your initial suggestion is the best option

2020-01-24 18:08
Notes from the lawn tractor meeting: 09:19:12 From Matt Droter : https://kyrofa.com/posts/your-first-robot-a-beginner-s-guide-to-ros-and-ubuntu-core-1-5 09:19:35 From Matt Droter : Your first robot - https://www.youtube.com/watch?v=KidVVqbsIHI 09:21:14 From Matt Droter : http://camjam.me/edukit

2020-01-25 19:00
Recording from the lawn tractor meeting: https://youtu.be/2w449x5J0_k



2020-01-25 22:33
I can only drive the robot about 20 feet away from the controller before it loses connection.

2020-01-25 22:34
ah..dang - range seems short

2020-01-25 22:38
Yeah.. loading/unloading getting in and out of the shop. Otherwise, you can use a USB joystick at your base station to drive around.

2020-01-25 22:51
maybe a wifi or a lorawan connection? a bit more range... or just use verbal commands...'let's go robot' ...and it follows you :wink:

2020-01-25 23:03
Speech commands are part of the ubiquity robotics raspberry pi build


2020-01-25 23:04
Get some

2020-01-25 23:04
well, turn it on already

2020-01-25 23:04
:thumbsup:

2020-01-26 22:27
I have gotten my base moved fully outside and mobile. The rover GPS is on my kitchen table and the 3DR radio's are staying paired and passing correction data. A pretty decent day.

2020-01-26 22:28
RTK fix is stable. Shown here using OEM software.

2020-01-26 22:32
showing 0.21 meters or 22mm range for radius or about 1.7 inches from extreme left to right.

2020-01-26 23:05
Actually I think that is 0.021m radius and not 0.21. From the list above it says Point Heading 0.000 Deg. So you can probably use that heading directly, since it is not wildly jumping around at zero velocity. As opposed to the more common (RCV? RMA?) message that provides heading. Does your ROS node understand PVT messages? Or will that have to be hacked?

2020-01-26 23:08
I'm currently outputting these statements. I don't remember how I got to these, but my recollection was these are the statements needed as input to ROS.

2020-01-26 23:30
Looking at the 3 RMC messages in your dump it looks like you have 54.4, 57.2 and 95.8 degrees. That does not look like the stable heading message. GGA has no heading data. Is your ComNav configuration guide on the Google drive? I can never find anything out there. Or was it posted as a Slack attachment?

2020-01-27 00:18
If you watch this for about 10 minutes (starting at 10:20) you can see my explanation of the difference between RMC and PVT. So if we modify the driver you guys are using (I think Matt and Al are both using the same driver) we might be able to use PVT and have both the F9P and the ComNav use the stable/latched heading. Can somebody refresh me as to which ROS driver node you are running? https://youtu.be/3Bhh6gy4Bs0?t=620

2020-01-27 00:37
This is the driver: https://github.com/ros-drivers/nmea_navsat_driver This is where you can add a new message type: https://github.com/ros-drivers/nmea_navsat_driver/blob/master/src/libnmea_navsat_driver/parser.py#L236 Do you know of the message definition online?

2020-01-27 00:46
Well now that I look at it. Maybe PVT is a concept. (Position, Velocity, Time) Maybe the actual message is GPVTG https://www.trimble.com/OEM_ReceiverHelp/V4.44/en/NMEA-0183messages_VTG.html Maybe we know until we actually try it. And it may be either GNVTG or GPVTG. Are you in a position where you can enable the GPVTG on your F9P?

2020-01-27 00:49
I see that driver already appears to be decoding the GPVTG. So maybe just turn it on. I don't know if that driver will then publish both headings. Or pick one over the other?

2020-01-27 00:53
@ Above you asked about configuration guides. I just put them in this folder. https://drive.google.com/open?id=1VcTAnGNjQ1T06VSXKtDeu-Jcn0vAtOR8

2020-01-27 01:05
Okay, looking at the ComNav reference I think you can do `log gpvtg ontime 1` You may have to specify port. Do it the same way you do your other commands.

2020-01-27 01:07
I see the ComNav has `GPVTG GNVTG BDVTG` But I would go with (or start with) the GPVTG which is probably what the driver is looking for.

2020-01-27 01:11
The real question is: is that the message that provides a latched heading?

2020-01-27 01:36
I don't see that the ROS driver is publishing any kind of heading. Is anybody seeing heading topic messages?

2020-01-27 06:46
why don't you use a normal RC remote control? I am using the one we use for our drones (FrSky Taranis X9D). The advantage is that you have a much higher rang, more switches to map, and you can use one controller for all the robots.

2020-01-27 12:16
@ Thanks for looking at it. Regarding the latched heading, I'm not sure. Can test that out.

2020-01-27 15:01
There are a couple of ways we can get the heading. The driver will output /vel in x,y. This can be used to generate heading. I use another node that reads in the /vel topic then publishes a ROS /heading message. https://drive.google.com/open?id=1LzT_Q1OiV7P7fPj_OpqNrm2XYbmt4ANW

2020-01-27 15:10
The gps driver will output a heading message if HDT is present. We could modify to include other messages. https://github.com/ros-drivers/nmea_navsat_driver/blob/master/src/libnmea_navsat_driver/driver.py#L319

2020-01-27 15:15
Good question. Yes, RC controllers are much better suited for that. Do you convert the PWM's on the vehicle side into ROS? Or does the PWM's go to a low level motor controller?

2020-01-27 18:04
So... do you want heading as an angle in degrees (radians) or as a quaternion vector. I.e., when you use it. I see the ComNav can generate the GPHDT message `log gphdt ontime 1` I'll try to track if the F9P will generate the GPHDT message.

2020-01-27 18:18
That's a good question. It may depend on the ros package. I modified geodetic_utils to use quaternion heading. gedetic_utils will take in nav_sat_fix, imu heading and combine them for odom. I was getting bad IMU data so I switch between IMU heading and GPS heading by using the gps_heading.py node to output the best heading guess. If you are interested in fusing multi sensors Robot_Localization is looking for odom, pose or twist.

2020-01-27 18:37
It doesn't look like F9P puts out HDT. For the VTG, the speed and heading (speed, true_course) are already available here: `elif not self.use_RMC and 'VTG' in parsed_sentence:` data = parsed_sentence['VTG'] # Only report VTG data when you've received a valid GGA fix as # well. if self.valid_fix: current_vel = TwistStamped() current_vel.header.stamp = current_time current_vel.header.frame_id = frame_id current_vel.twist.linear.x = data['speed'] * math.sin(data['true_course']) current_vel.twist.linear.y = data['speed'] * math.cos(data['true_course']) self.vel_pub.publish(current_vel) true_course (from either RMC or VTG) could be published directly like they do here: `elif 'HDT' in parsed_sentence:` data = parsed_sentence['HDT'] if data['heading']: current_heading = QuaternionStamped() current_heading.header.stamp = current_time current_heading.header.frame_id = frame_id q = quaternion_from_euler(0, 0, math.radians(data['heading'])) current_heading.quaternion.x = q[0] current_heading.quaternion.y = q[1] current_heading.quaternion.z = q[2] current_heading.quaternion.w = q[3] self.heading_pub.publish(current_heading) There is something about use_RMC or not. It is not clear to me exactly what changes when you do that. So it looks like you can get velocity vector from GGA or RMC and/or get a heading message from HDT. But I am not sure how use_RMC controls that. But I'm guessing you are using the velocity vector from GGA which is noisy. Maybe check if the velocity vector from RMC is noisy. And then check to see if the heading output (HDT) is noisy (which Al can get).

2020-01-27 18:45
Maybe the quick thing to check would be to connect the ublox setup tool (u-center) to an F9P and turn on RMC, VTG and watch the NMEA output messages. You can see the heading field in each one and see if they are noisy or they are stable when not moving. From Al's dump it looks like the RMC is noisy. And I'm assuming their derived velocity from GGA is also noisy. I should go setup my old Windows laptop and see if I can get u-center to run again...

2020-01-27 18:45
That would be interesting if they are different

2020-01-27 18:49
Somewhere they are different because I could see the stable data on my plots. But I was proscessing binary massages from the F9P. So the question is can you get stable data from one of the NMEA messages.

2020-01-27 19:08
You might be able to modify your existing code: ``` def vel_callback(self, msg): y = float(msg.twist.linear.y) x = float(msg.twist.linear.x) # check for nan values if isnan(x) or isnan(y): # If vel is nan then use last good heading self.current_heading = self.heading_last_good else: yaw = float(atan2(y,x)) #yaw += 1.5708 yaw = self.yaw_to_degree(yaw) self.VelYaw = yaw # Degrees to Radians yaw *= pi/180.0 self.current_heading.header.stamp = rospy.get_rostime() self.current_heading.header.frame_id = 'gps' q = quaternion_from_euler(0, 0, yaw) self.current_heading.quaternion.x = q[0] self.current_heading.quaternion.y = q[1] self.current_heading.quaternion.z = q[2] self.current_heading.quaternion.w = q[3] self.heading_last_good = self.current_heading``` Something like this: ``` def vel_callback(self, msg): y = float(msg.twist.linear.y) x = float(msg.twist.linear.x) # check for nan values if isnan(x) or isnan(y): # If vel is nan then use last good heading self.current_heading = self.heading_last_good else: if x > 0.1 or y > 0.1: yaw = float(atan2(y,x)) #yaw += 1.5708 yaw = self.yaw_to_degree(yaw) self.VelYaw = yaw # Degrees to Radians yaw *= pi/180.0 global_yaw = yaw self.current_heading.header.stamp = rospy.get_rostime() self.current_heading.header.frame_id = 'gps' q = quaternion_from_euler(0, 0, global_yaw) self.current_heading.quaternion.x = q[0] self.current_heading.quaternion.y = q[1] self.current_heading.quaternion.z = q[2] self.current_heading.quaternion.w = q[3] self.heading_last_good = self.current_heading``` Then it holds the last yaw unless you are moving above a minimum speed (0.1 m/s) You may have to create/init global_yaw somewhere else.

2020-01-27 19:24
Yes, I use the gps if I am going over .4 m/s otherwise the IMU. `#!/usr/bin/env python` `import rospy` `from math import atan2, isnan, pi, radians` `from nav_msgs.msg import Odometry` `from geometry_msgs.msg import TwistStamped, Quaternion, QuaternionStamped` `from tf.transformations import euler_from_quaternion, quaternion_from_euler` `from sensor_msgs.msg import Imu` `from std_msgs.msg import Float64` `class HeadingCalibration():` `def __init__(self):` `self.best_heading = QuaternionStamped()` `self.vel_sub = rospy.Subscriber('vel', TwistStamped, self.vel_callback)` `self.imu_sub = rospy.Subscriber('imu/data', Imu, self.imu_callback)` `self.wheel_sub = rospy.Subscriber('wheel_odom', Odometry, self.wheel_callback)` `self.raw_vel_sub = rospy.Subscriber('raw_vel', TwistStamped, self.raw_vel_callback)` `self.head_pub = rospy.Publisher('bestheading', QuaternionStamped, queue_size=1)` `self.vel_pub = rospy.Publisher('cal/gps_vel', Float64, queue_size=1)` `self.imu_pub = rospy.Publisher('cal/imu', Float64, queue_size=1)` `self.wheel_pub = rospy.Publisher('cal/wheel', Float64, queue_size=1)` `self.best_pub = rospy.Publisher('cal/best', Float64, queue_size=1)` `self.rawVel = 0.0` `self.imu_offset = 0.0` `self.imu_raw = 0.0` `self.wheel_cal = False` `self.wheel_offset = 0.0` `self.wheel_last = 0.0` `self.VelYaw = 0.0` `self.WheelYaw = 0.0` `self.ImuYaw = 0.0` `self.bestYaw = 0.0` `self.raw_speed_list = [0]` `self.speed_good = False` `def raw_vel_callback(self, msg):` `self.rawVel = float(msg.twist.linear.x)` `# Filter gps heading when changing speeds forward/reverse` `self.raw_speed_list.insert(0, self.rawVel)` `if len(self.raw_speed_list) > 5:` `del self.raw_speed_list[-1]` `if (self.rawVel - self.raw_speed_list[-1]) > 0.4:` `self.speed_good = False` `else:` `self.speed_good = True` `def vel_callback(self, msg):` y = float(msg.twist.linear.y) x = float(msg.twist.linear.x) `# check for nan values` `if isnan(x) or isnan(y):` `self.VelYaw = self.bestYaw` `else:` `# change yaw to range -pi/pi` `yaw = (2*pi - (-float(atan2(y,x))))` `if yaw > pi:` yaw -= `2*pi` `self.VelYaw = yaw` `def imu_callback(self, msg):` quat = (msg.orientation.x, msg.orientation.y, msg.orientation.z, msg.orientation.w) euler = euler_from_quaternion(quat) yaw = euler[`2]` `self.imu_raw = yaw` `# Get imu offset when heading from GPS is good` `yaw -= self.imu_offset` `self.ImuYaw = yaw` `def wheel_callback(self, msg):` `#vth = ((data.twist.linear.z - data.twist.linear.y)/0.7366) # * yaw_cal` `quat = (msg.pose.pose.orientation.x,` `msg.pose.pose.orientation.y,` `msg.pose.pose.orientation.z,` `msg.pose.pose.orientation.w)` `euler = euler_from_quaternion(quat)` `yaw = euler[2]` `# Use GPS heading as reference. Add wheel yaw difference.` `self.WheelYaw = self.wheel_offset + (yaw - self.wheel_last)` `self.wheel_last = yaw` `def publish_heading(self):` rate = rospy.Rate(`5)` `while not rospy.is_shutdown():` `# tests to see which one is best` `# If we are going forward and not changing speeds use GPS` `if (self.rawVel > 0.4) and self.speed_good:` `self.wheel_offset = self.VelYaw` `self.imu_offset = self.imu_raw - self.VelYaw` `# Use GPS Heading` `self.bestYaw = self.VelYaw` `#print(self.VelYaw - self.WheelYaw)` `#print "IMU = %.2f Vel = %.2f offset = Vel = %.2f" % (self.ImuYaw, self.VelYaw, self.imu_offset)` `else:` `# If GPS is bad use wheel or IMU` `# Need test for IMU` `# Store the last known heading` `self.wheel_offset = self.WheelYaw` `self.bestYaw = self.ImuYaw` `#self.bestYaw = self.ImuYaw` `self.best_heading.header.stamp = rospy.get_rostime()` `self.best_heading.header.frame_id = 'gps'` `q = quaternion_from_euler(0, 0, self.bestYaw)` `self.best_heading.quaternion.x = q[0]` `self.best_heading.quaternion.y = q[1]` `self.best_heading.quaternion.z = q[2]` `self.best_heading.quaternion.w = q[3]` `self.head_pub.publish(self.best_heading)` `self.vel_pub.publish(self.VelYaw)` `self.imu_pub.publish(self.ImuYaw)` `self.wheel_pub.publish(self.WheelYaw)` `self.best_pub.publish(self.bestYaw)` `#print("Heading Vel, Wheel, IMU, best:"+str(self.VelYaw)+" " +str(self.WheelYaw)+" "+str(self.ImuYaw)+" "+str(self.best_yaw))` `rate.sleep()` `rospy.spin()` `if __name__ == '__main__':` rospy.init_node(`'heading_compare_node')` heading_object = HeadingCalibration() `try:` heading_object.publish_heading() `except rospy.ROSInterruptException:` `pass`

2020-01-27 19:25
Tried to compare all of the heading messages I could get. IMU, GPS (vel and bearing) and wheel encoders.

2020-01-27 19:31
My suggested change may clean up your GPS heading. Before you start comparing to IMU or anything else.

2020-01-27 19:33
So you are not publishing garbage in the first place.

2020-01-27 19:38
Good point.

2020-01-28 06:35
Actually i'm using Pixhawk for that. I know it may seem a bit unnecessary to have an additional device only for RC, but there are other advantages for using a Pixhawk with Mavros package: ? RC receiver ? Additional filtered IMU and GPS messages ? Battery monitor ? Mission planner (much more convenient for creating waypoints) ? Additional PWM outputs

2020-01-31 16:52
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2020-01-31 18:03
Notes from the lawn tractor meeting: 09:02:30 From Matt Droter : cmd_vel to ackermann http://wiki.ros.org/teb_local_planner/Tutorials/Planning%20for%20car-like%20robots 09:31:25 From Matt Droter : Free 6 week long ROS class on edX https://online-learning.tudelft.nl/courses/hello-real-world-with-ros-robot-operating-systems/ 09:36:50 From Matt Droter : https://courses.edx.org/courses/course-v1:DelftX+ROS1x+1T2020/course/ 09:44:37 From Al Jones : 8 channel relay http://denkovi.com/usb-eight-channel-relay-board-for-automation 09:55:01 From Al Jones : Python program to control USB board: "drcontrol.py" 09:55:34 From Al Jones : https://github.com/amauragis/drcontrol/blob/master/drcontrol.py 09:58:08 From Al Jones : Notes: https://docs.google.com/document/d/16x14S8-m1xBQpVjErUe0ZYRLSQ45uW16dIpj4LVRDhQ/edit#

2020-01-31 19:32
Recording from the lawn tractor meeting: https://youtu.be/ECgD4L_U-hc

2020-02-02 00:44
So now I have the next version of my electronics box reasonably complete.

2020-02-02 00:45
Another shot.

2020-02-02 00:47
Now I have to get the black box situated behind the gas tank... The old flat sheet of metal has to come off and I need to construct a bracket to hold the mower bed.

2020-02-03 21:19
I needed away to (cheaply) get correction data for my uBloc F9P GNSS receiver. I got my NetGear AC770S hotspot to work. I ordered the hotspot from Amazon. I got a sim card from http://FreedomPop.com ($10) and it claims I will get up to 200 MB/month for free. FreedonPop appears to be under new management and there emails and web pages don't seems to be the quality I would expect. But I poked at it and thought it was close. Then I went around them and searched for the hotspot and FreedomPop and and found the instructions (on their website) I needed for my box. Then my problem was that it would only connect if I applied pressure to the sim card door. The sim card was apparently not latching in. The next day I systematically used a plastic fork to press on the card from various angles and it finally latched in. Now when I turn it on it connects to the cell network. I hope I don't have to take the card out again... At one point the hotspot seemed to be downloading data when it was not connected to the laptop. I thought it might be doing updates but there doesn't appear to be any way to know what it is doing. You just see the usage number incrementing. I figured it was doing an update so I watched it for awhile assuming I needed to let it finish. After while it seemed to slow down but I couldn't see that it was going to stop. It had burned through 10 MB. I turned it off and back on. It seemed to have calmed down... Now for the important info. I tried to connect to the Minnesota CORS correction server from my laptop. It worked. I ran a couple of short tests and it did not appear to be rapidly burning through my 200 MB of available free data. I did a more systematic test of running for an hour. It appears to use about 40 KB/Minute and it used 2.33 MB in one hour. Until I do some testing I am going to declare this a success. I'll have to see if they are going to try to bill any extra fees. I also haven't tried connecting through the USB instead of WiFi. So I don't which method I will use.

2020-02-04 11:53
Al, do you have a block diagram of the electronics?

2020-02-06 00:36
I'll dig up what I have.

2020-02-06 00:38
Added USB plugs for right Odom, angle sensor and servo/transmission connections.

2020-02-06 03:49
@ Did you get around to trying the F9P to F9P corrections over WiFi? I was sitting here watching TV and I think these are the command lines to make it work. Or at least a good starting point. You do have to download the RTKLIB package and compile str2str.

2020-02-06 03:49
```Base: str2str -in -out tcpsvr://:50000 Rover: str2str -in -out ```

2020-02-06 04:10
It just occurred to me that this may not work. Maybe it will take some more tricks at the rover end. I modified my F9P ROS node to accept the correction messages as a ROS topic and send them to the USB port. So the ROS node was multiplexing the in/out data on the F9P. The correction messages don't have to ROS topics, but your GPS node needs to be modified to read whatever data you are providing. If you are willing to add a connection on one of the UARTs on the F9P, you can feed in correction data directly.

2020-02-07 16:21
Reminder, ROS Agriculture lawn tractor meeting starts in 40 minutes. Web meeting link: http://meet.ros-a.org Meeting ID is: 143104309

2020-02-07 17:54
@ In reply to the question about a block diagram, @ prepared this and it is the best I've seen. I am generally following Matt's design closely. This diagram is in the lawntractor GDrive.

2020-02-07 21:18
Thanks Al!

2020-02-07 22:22
Recording from the lawn tractor meeting: https://youtu.be/aaF-LyvIVrU

2020-02-12 01:03
Hi All, I hate to be the new guy that comes in and suggests all these changes, but is there signficant effort involved in getting the stack to be Ubuntu 18.x / Kinetic as Ubuntu 16.x is EOL? In the past when I went from this stack upgrade, my team had noticed no issues in the transition.

2020-02-12 01:05
In other words, I am prepping my ROS install on my development computer now, and I will go ahead and install Ubuntu 18.x and Melodic. , unless any one says something otherwise

2020-02-12 01:06
Perfect. Here is an install script https://github.com/linorobot/rosme

2020-02-12 04:15
Has anyone tried on 18.x? I am getting the following when trying to launch the simulator:

2020-02-12 04:16
"Map update loop missed its desired rate of 1.0000Hz... the loop actually took 31.5000 seconds" Looking into it it seems like something in the navigation stack not liking simulation time https://github.com/ros-planning/navigation/issues/468

2020-02-12 14:35
@ I have not tried 18.x. Step 1 and Step 5 show what I have done. Using the Ubiquity image (step 5) is important to me at the moment. When they move, I will likely move too. https://drive.google.com/drive/folders/1G6VALYQ8-3vcwAyXlfypZ8CHbUbxiEgI

2020-02-12 14:45
Dang. I have not tried the simulator on Melodic. Not sure if there is a fix for that error.

2020-02-13 01:34
Ok guess this is an issue with Melodic. Thanks for confirming that there is no other fix you guys know of at this point. Also, glad to discover the Google Docs!

2020-02-13 02:33
Good news, the 16.x / melodic install isn't throwing any of these issues. Looks like I was wrong about the easy switch over to 18.x. Let it be known!!!

2020-02-14 20:04
Recording from the lawn tractor meeting: https://youtu.be/0iDuj99WTOs

2020-02-15 02:56
I may be back in business. I tried to recreate my IDE development system for my ST Micro eval baord, with no luck. I created a new project from scratch using my original hardware definition file. It created a C file with just the initialization code. It compiled. I then copied all of my robot code in to that. And compiles, loads and appears to be running. I am still having a problem with CAN bus initialization crashing, but it was doing that before on this "spare" board. So I will try to track that down. Then I may finally be back to development...

2020-02-15 04:14
Okay, so I got to the bottom of my CAN initialization problem. It turns out that if you don't have a CAN tranceiver attached, the init routine fails (as it is expecting a standard bus state). Someone suggests connecting the CAN RX pin through a pull-up resistor to 3.3V. That seems to solve the problem. So tomorrow I will put my spare controller board (programmed with my new development system) into my robot and see if it will drive. And I should solder a pull-up resistor on both boards so they will work in or out of the robot...

2020-02-15 04:30
I think I have code in place to accept ROS cmd_vel messages. I think the forward speed is scaled relatively close. I just have a scale factor number to convert Meter/Second into Counts/Second for the main motor. I think I have it down to a scale factor value to convert steering angle (in radians) into a R/C pulse width to set the steering angle. But I don't know what the scale factor should be. I may have to measure the steering angle (with a protractor) and set the scale factor based on that. In reality, the steering angle controls the diameter of the circle the vehicle traces out. I think that is what they refer to as curvature. So to calibrate it I need to set the steering angle to an arbitrary angle (say approximately 10 degrees) and see what the circle diameter the vehicle traces out when I drive. Then back calculate to see what my scale factor should be. So I could automate that by measuring the circle diameter with RTK GPS and figuring the scale factor. The relationship between steering angle and curvature and vehicle distance has always baffled me. This would be a good time to figure that out... :slightly_smiling_face:

2020-02-15 04:37
Oh, the biggest problem is deciding how to multiplex (or select) the control signals. I will probably use a switch on the remote control to set the source to remote joystick commands or ROS cmd_vel commands. That can also work as a "Pause" function if I switch from ROS to remote.

2020-02-17 08:40
Check out yocs_cmd_vel_mux: https://wiki.ros.org/yocs_cmd_vel_mux - you can specify a list of inputs (cmd_vel_topics) and their prioritiy - the message with the highest priority will always be the one that's sent to the cmd_vel topic

2020-02-17 22:31
Yes, I have seen a couple of cmd_vel_mux packages. I'll look this over and see how their priority scheme works. But I prefer something that is safer and more reliable than going through ROS. I prefer to be able to drive my robot around without booting up the ROS computer.

2020-02-21 16:54
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2020-02-21 17:41
Notes from the Lawn Tractor meeting: 09:04:57 From Allan : https://www.vention.io/ 09:20:39 From Matt Droter : How to use rosbags https://www.theconstructsim.com/ros-5-mins-045-rosbag-record-playback-ros-topics/ 09:24:28 From Matt Droter : rosbag active fix https://answers.ros.org/question/40116/rosbag-file-cannot-be-made-bagactive/ 09:31:04 From Matt Droter : Online machine shop https://www.emachineshop.com/ 09:32:49 From Al Jones : AGOpenGPS correct or no? https://agopengps.jimdosite.com/ 09:35:05 From Al Jones : https://agopengps.discourse.group/ 09:36:25 From Jeff Sampson : agopengps forum: https://agopengps.discourse.group/ 09:39:17 From Matt Droter : ROS Plan https://kcl-planning.github.io/ROSPlan/

2020-02-22 20:51
Recording from the lawn tractor meeting: https://youtu.be/eJNMzFvthFs

2020-02-22 20:52
Too narrow for an autonomous mission?

2020-02-22 20:53
Oh, do you have a video of that ?

2020-02-22 20:53
Haven't tried autonomously yet. This is just driving manually.

2020-02-22 21:01
No way

2020-02-22 21:21
ok, is it remote driving ?

2020-02-22 21:23
Nope just me sitting on it driving it normally.

2020-02-22 21:24
In the picture it is just parked

2020-02-22 22:33
ok :disappointed:

2020-02-26 03:36
I accidentally pushed to the ROS-A Master branch for lawn-tractor. I thought I was pushing to my fork's master. Please protect this branch from me :open_mouth: as I think someone should review my changes

2020-02-28 17:31

2020-02-28 20:47
Recording from the lawn tractor meeting: https://youtu.be/QvROK9bPPJM

2020-03-02 16:42
Hello everyone, excuse me but it really makes me difficult to attend slack too. During the last time I am working on the "edX DelftX: ROS1x Hello (Real) World with ROS - Robot Operating System" course, I had clearly reached the limit of my knowledge and it was necessary to add more. We will see in the coming months how much I can improve the existing work on my project. Thank you very much to all and although I do not contribute to the group, I read all of you in your comments.

2020-03-03 01:11
Able to get my updated electronics case installed and starting the testing process again. Data graph is the angle sensor straight, left and right with me manually turning the wheel. The PID tuning is next.

2020-03-03 20:36
OK math geniuses, if my full left sensor value is 27,000 and full right is 47,000 (i.e. 20,000 tick) what is the math for full left to be 1 and full right to be 1024?

2020-03-03 20:37
Maybe that will help my PID calculation

2020-03-03 20:39
(x/47000-27000))*1024+1

2020-03-03 20:41
Same map function as setting the steer angle from cmd_vel in your lawn tractor base software. https://www.arduino.cc/reference/en/language/functions/math/map/

2020-03-03 20:43
where x is the value from your encoder,

2020-03-03 20:44
(x/(47000-27000))*1023+1

2020-03-03 20:44
with that the excursion is between 1 and 1024

2020-03-06 18:25
Notes from the lawn tractor meeting: 09:39:11 From Allan : rostopic echo /joint_states/position[2] 09:40:52 From Allan : rostopic echo /joint_states | grep position > txtFile.txt 09:47:43 From Jeff Sampson : https://www.mpja.com/Coupling-Flexible-Helical-Cut-5mm-to-635mm-1_4/productinfo/33609+HD/ 09:51:51 From Jeff Sampson : https://www.mpja.com/Universal-Battery-Charge-Monitor-with-Temperature/productinfo/35670+ME/ 09:52:11 From Jeff Sampson : https://www.mpja.com/Universal-Battery-Charge-Monitor-with-Temperature/productinfo/35670+ME/

2020-03-06 18:45
I found the YouTube videos I was talking about. The first one is actually speed control. The second one is position control. https://www.youtube.com/watch?v=Oai8qMH2yTU https://www.youtube.com/watch?v=zZ40o9QnoUY

2020-03-06 21:43
Recording from the lawn tractor meeting: https://youtu.be/sNavj1iZ5pQ

2020-03-07 02:39
@ Matt - what was the ROS topic graphing tool you demo?d on the lawnmower call today?

2020-03-07 14:31
I am not sure. It looks like you and Al did the demos. Do you remember where you saw it? For calibrating the PID on steering I use RQT. There is robot_steering that lets you publish your desired target. Then RQT_Plot to plot the response. http://wiki.ros.org/rqt_robot_steering http://wiki.ros.org/rqt_plot https://www.youtube.com/watch?v=HbNIBZwvFi4

2020-03-07 17:57
RQT_Plot is the one I was looking for! Much easier if I learn to use the ROS native features... thanks for your help!

2020-03-07 18:00
During the lawn tractor meeting I wasn't sure how the flow of input commands was moving between nodes and topics - it dawned on me after the call that this command is easy to use and it shows the layout -> rqt_graph.

2020-03-07 18:20
to start the graphing I used this from the command line -> rqt_plot /joint_states/position

2020-03-07 18:21
once rqt_plot starts add each element of the joint states array into the upper left corner box and hit enter.

2020-03-08 17:50
Some progress to report on steering control. The following commands drove the steering motor to produce the attached actual steering results with the machine standing still in the garage. My steer_motor effort setting is at 60. At 50, the motor would not reach the target. ```#!/bin/bash timeout 8 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.3}}' timeout 8 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: -0.3}}' timeout 12 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.6}}' timeout 12 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: -0.6}}' timeout 15 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 1.0}}' timeout 15 rostopic pub -r 10 teleop/cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: -1.0}}'```

2020-03-09 00:05
Congrats!

2020-03-09 00:05
Looks nice

2020-03-09 13:09
For all of you still using rqt_plot check out PlotJuggler: https://github.com/facontidavide/PlotJuggler - it supports drag&drop and allows you to load a bag file directly. I find it way easier to use than anything else

2020-03-10 20:40
Raining here. Made a walk around video. U will likely have to download it as it is on MS OneDrive. Hoping to test in the yard soon. *https://1drv.ms/v/s!AlSRhxzgYnAlhKxa51hpSYhy_IsHxQ?e=CtjUkS* Sorry, no, I've not taught myself uploading videos to YouTube.

2020-03-13 01:41
Thanks for sharing. I would say I'm a new fan. I especially like being able to save the layout. I struggled with doing that in rqt.

2020-03-13 06:32
I'm glad you like it @! Another cool tip: You can select two X,Y topics (e.g. Odometry etc), and drag them onto the plot window while holding the right mouse button. This is very useful when comparing various odometry sources against each other.

2020-03-13 17:30
Notes from the lawn tractor meeting: 09:45:54 From Al Jones : To see list of saved connections, run $ nmcli c 09:46:10 From Al Jones : Run, $ nmcli dev wifi # to see available connections and strength 09:46:28 From AllanScherger : netsh wlan 09:46:41 From Al Jones : If you want to check the wi-fi link quality, run $ watch -n 1 "awk 'NR==3 {print \"WiFi Signal Strength = \" (\$3/70)*100 \" %\"}''' /proc/net/wireless" # this is not the same as signal strength. 09:46:45 From AllanScherger : netsh wlan is for windows 09:47:12 From AllanScherger : https://stackoverflow.com/questions/21240305/get-nearby-bssid-and-signal-strength-in-java 09:47:45 From Al Jones : $ ifconfig -a # show the current interfaces 09:49:11 From Al Jones : For RPi, run $ nmcli d wifi connect {ssid} password {password} 09:49:29 From Al Jones : For RPi, run $ nmcli d wifi connect {ssid} password {password} 09:52:59 From Matt Droter : ROS package as snap https://www.youtube.com/watch?v=22tWldE_T7Q

2020-03-14 19:09
Recording from the lawn tractor meeting: https://www.youtube.com/watch?v=Cp1qO2Kcf-g

2020-03-16 02:34
Ive been thinking how to get steering feedback on my tractor. Angle sensors on the front tires and axles are out of the question because of the low clearance profile. So... how about sensing the rotation of the steering wheel? Maybe put a plywood disk on the steering wheel and treat it like an encoder wheel? Drill small holes? I would need a lot of resolution.

2020-03-16 03:58
If you have hydraulic steering, you may not have 1:1 correspondence between the steering wheel and the front wheel angle.So it may "slip" over time. Maybe someone else has already tried that? You don't have ANYWHERE in the steering linkage to mount a sensor? In this video it looks they added something to the front left steering joint. But that looks like a bigger tractor than you have. https://www.youtube.com/watch?v=JeGsF2v1WuE This one might be slightly smaller and also appears to have a sensor front left: https://www.youtube.com/watch?v=dMWY8I_OurQ

2020-03-16 13:32
Thanks Jeff!

2020-03-18 02:59
Some comments about the last lawn tractor meeting; I really like the idea of spreadsheet ?check list?/step by step startup. It helps a novice like me to understand what is needed, a road map of sorts. I?d be interested in Jeff?s ?list? given the overall complexity he is striving for. Maybe even a visual of the big picture sort of thing? Matt?s discussion of that little wheeled box of complexity looks promising for someone like me to get on board. Matt do you have a link for that product?

2020-03-18 03:13
My robot is no more complex than @ and @ and @ lawn tractors. I just whine around a lot more about mine so It might sound more complex. :grinning: I should write up my list, hopefully I may need it in the near future... Links for video meetings are usually posted just after the meeting has occurred. You can find the date and locate the related comments in Slack. You may find some of the kits may be out of stock.



2020-03-18 18:20
Thanks Matt for the links. The game pads are sold out so I?ll keep looking. BTW can Al?s ?list?, as well as others, be down loaded or accessed on line?

2020-03-19 00:32
@ @ Jeff - I have a couple questions: 1. Regarding the ardusimpleRTK2B-SBC vs a plain ardusimpleRTK2B.... what would an advantage or example use of getting the SBC option? 2. one option they show is using VRS/SSR corrections - this seems nicer in that i'd only need one ardusimpleRTK2B; but more complex that I'd need to subscribe to a VRS/SSR service. Do you know if the VRS/SSR service could be free? This site mentions CDDIS and IGS Central Bureau as two options for getting SSR corrections data -> https://rtklibexplorer.wordpress.com/2018/05/08/using-ssr-corrections-with-rtklib-for-ppp-solutions/ but I haven't found out if it's free yet or not. Thoughts/Questions? :slightly_smiling_face: Thanks in Advance!

2020-03-19 01:21
I'll let @ explain away the ardusimpleRTK2B-SBC, he posted it. (Looks to me like their way to get people to fork over $20K for their custom design service.) As far as VRS, VRS is RTK. Your local DOT is either VRS or not. Either way you just feed it to your RTK receiver and it works. I don't know enough about SSR to comment.

2020-03-19 15:13
I posted the wrong like. Looking for the one with heading https://www.ardusimple.com/simplertk2blite/

2020-03-21 14:51
Good video's on setting up your Ardusimple GPS base station: https://www.youtube.com/watch?v=qlkN70bBfFQ

2020-03-21 18:41
Recording from the lawn tractor meeting: https://youtu.be/Gn26IX8fulU

2020-03-27 19:28
I just found a new toy in the trash.

2020-03-27 19:41
Before you start, how many fingers are you starting with? ;-)

2020-03-27 19:43
I have way too many. The guy did warn me to tighten the head bolts before I try to start it. I should attempt to clean out a spot in my garage.

2020-03-28 16:27
Recording from the lawn tractor meeting: https://youtu.be/HPc5LQ7o7u0

2020-03-30 19:54
@ Has tweaked the navsat driver and put it here https://github.com/ros-agriculture/nmea_navsat_driver which is awesome. I was getting some results I did not understand so I finished my simple publisher of course, speed, sat quality, and no. of satellites parsed from RMC and GGA sentences . Hoping soon to get these four things into the navsat driver so I can be standard. Yard was a lake over the weekend from rain so hoping to test soon, ```#!/usr/bin/env python import rospy from nmea_msgs.msg import Sentence from std_msgs.msg import Int16 from std_msgs.msg import Float32 rospy.init_node('read_nmea5', anonymous = True) pub_sat_no=rospy.Publisher('satellite_no', Int16, queue_size=1) pub_sat_qual=rospy.Publisher('satellite_qual', Int16, queue_size=1) pub_spd_over_grnd=rospy.Publisher('speed_over_ground', Float32, queue_size=1) pub_true_course=rospy.Publisher('course_over_ground', Float32, queue_size=1) def callback(message): response = message.sentence if response[0:6] == "$GPRMC": sdata = response.split(",") speed = sdata[7] # Speed in knots pub_spd_over_grnd.publish(knots_to_meters_per_sec(float(speed))) trCourse = sdata[8] # True course pub_true_course.publish(float(trCourse)) #rospy.loginfo("speed %s, course %s, full sentence %s", speed, trCourse, response) if response[0:6] == "$GPGGA": qdata = response.split(",") gps_qual = qdata[6] # GPS Quality Indicator num_sats = qdata[7] # Number of Satellites in use pub_sat_no.publish(int(num_sats)) pub_sat_qual.publish(int(gps_qual)) #rospy.loginfo("gps_qual %s, num_sats %s, full sentence %s", gps_qual, num_sats, response) def knots_to_meters_per_sec(knots): return knots * 0.51444444444444 def listener(): rospy.loginfo("start listening") rospy.Subscriber("/nmea_sentence", Sentence, callback) rospy.spin() if __name__ == '__main__': rospy.loginfo("Initiating read_nmea5.py...") listener()```

2020-03-31 10:02
I live in Norway, thus i will be really, really interested in working on automating this. I do have something similar to this one, and something else which is electric (small version, that works on AC, was thinking about have and DC/AC converter to make it run on batteries, but didn't reach to include it in the priority list yet)

2020-03-31 17:36
Much cleaner. Here is the gps odom node that will combine your local position and heading.


2020-03-31 17:38
You will need this package if you don't have it installed https://github.com/ros-agriculture/geonav_transform

2020-03-31 17:48
I probably won't try to automate this one. Maybe after one snow season I may consider it. I don't know if this one will self-propel itself. I assume it will have to be muscled around. Otherwise, it will constantly be stuck in the snow. Plus it appears to have a solid axle, so that would have to be re-engineered also. And it looks like it too large to attach to the front of my lawn tractor. But... I do have several smaller single-stage snow blowers that I have collected. These would be small enough to attach to the front of my lawn tractor and I could power the blower from the big engine on the lawn tractor. But my experience with single-stage snow blowers is that they always plug up. Maybe running the blower at a higher speed will help. This would also give me more incentive to automate my lawn tractor...

2020-03-31 19:44
Indeed. I was thinking about using some mobile platforms to attach the snow blower (the electrical one), but again, it should go up on the priority list, maybe it will be as i get tired of doing this manually, which is almost the case now.

2020-04-03 15:46
Lawn tractor meeting (12 noon EST) is about to start. http://meet.ros-a.org

2020-04-03 20:42
Recording from the lawn tractor meeting: https://youtu.be/o4sh_no8VLk

2020-04-05 23:55
Lattice Based Global Planner in Simulation

2020-04-05 23:56
Generic Based Global Planner for Comparision

2020-04-06 18:54
Very cool. Excited to try it out.

2020-04-08 02:33
Thanks!


2020-04-09 14:45
Wondering how many other variations are out there?

2020-04-10 17:07
Notes from the lawn tractor meeting: 09:34:37 From Matt Droter : rosparam - http://wiki.ros.org/rosserial/Overview/Parameters 09:45:08 From Al Jones : Amp Monitoring board: https://www.amazon.com/FTCBlock-Analogue-Current-Sensor-Arduino/dp/B079P4LVPV/ref=sr_1_3?keywords=current+sensor+30A&qid=1560908558&s=gateway&sr=8-3 09:48:40 From Jeff Sampson : Current sensing: https://www.youtube.com/watch?v=cG8moaufmQs

2020-04-11 15:01
Nice layout!

2020-04-11 15:30
@ _'m trying to figure out how to get navigation to work based on your guidance and have started these instructions. Can you review and offer additional guidance? (e.g. what node of_ geonav_transform _needs to be started and from where?) link to instructions:_ https://drive.google.com/open?id=1w_Fov8f1pLcqdNKBaucbpZfACeNem78JZIqF_qYJybQ

2020-04-11 15:32
geonav_transform is an include. See line 12, It is the package that will transform your GPS coordinates into local coordinates. https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23 (

2020-04-11 15:36

2020-04-11 15:50
@ Have you done any of this for the lawntractor? http://wiki.ros.org/navigation/Tutorials/RobotSetup

2020-04-11 15:52
"any of this"?

2020-04-11 15:53
1.2 Transforms configuration?

2020-04-11 15:55
Of course. That's is how our tractor drives around. It is all part of the software on github. You need to supply the odom to base_link transform.

2020-04-11 15:55
can you share how you did that for the Cub Cadet?

2020-04-11 15:56
Is there something that isn't making sense?

2020-04-11 15:58

2020-04-11 16:06
Once you are able to run the gps_http://odom.py node and get odometry publishing on /odom. Then, copy this launch file https://github.com/ros-agriculture/lawn_tractor/blob/master/lawn_tractor_sim/launch/lawn_tractor_sim.launch Delete lines 4-10 (Don't start the simulator.) Then take a look at your Transform Tree. ( $ rosrun tf view_frames && evince frames.pdf)

2020-04-11 16:21
Recording from the lawn tractor meeting: https://youtu.be/CipYuTKCZi0

2020-04-11 20:56
fyi

2020-04-11 21:33
@ fyi

2020-04-11 21:40
Unbroken TF tree :slightly_smiling_face: Congrats!

2020-04-11 21:41
This isn't the lawn tractor TF tree but hopefully this is making more sense.

2020-04-15 02:12
Photos of wheel encoder (i.e. speed sensor/odom sensor)

2020-04-15 02:14
2nd

2020-04-15 02:18
Installed and running...

2020-04-16 21:53
I don?t suppose anyone has in field distance data using one of these ubiquity bullets. Wanting to send ntrip corrections 1500 ft in the field without cell signal.

2020-04-17 11:41
Kai, I for one am just beginning to understand how to navigate. Can you talk more about your project? Maybe start with a high level concept then flesh out the details?

2020-04-17 17:26
Notes from the lawn tractor meeting: 10:05:13 From Al Jones : https://github.com/nebkat/esp32-xbee/wiki/Getting-Started 10:09:46 From Matt Droter : ROSLaunch http://wiki.ros.org/roslaunch 10:10:11 From Matt Droter : What is a launch file https://www.youtube.com/watch?v=pCBwos89fI0 10:11:31 From Matt Droter : Roslaunch tips for large projects http://wiki.ros.org/roslaunch/Tutorials/Roslaunch%20tips%20for%20larger%20projects 10:16:07 From Matt Droter : Joystick teleop https://github.com/ros-agriculture/tractor_teleop 10:18:24 From Matt Droter : Simulator https://github.com/ros-agriculture/tractor_sim/wiki

2020-04-18 01:05
@ This is the TF tree I am getting from the lawntractor simulator on my laptop. Does this look correct?

2020-04-18 03:03
Yes. The simulator (stageros) is providing the transforms between odom and base_link. We need to replace the simulator with your robot now. Make a copy of this launch file and delete lines 4-10. Start this launch file with your robot connected and the gps_odom.py node running. What does your tf tree look like? Make sure there aren't nodes running from the ubiquity startup script.

2020-04-18 07:20
Interesting. Wonder if one might be able to accomplish this with the LoRaWAN signaling infrastructure. Very cool stuff.

2020-04-18 14:33
@ I?ve been working on and off with this skid steer zero turn frame. It has started using ardupilot as the base navigation stack, I then learned about ROS. Mavros is a nice plugin for a pi that allows you to run a ros node and control / communicate with the ardupilot controller. My end goal is to move the system entirely to ROS software, but I?d like to do it piece by piece. Starting with ardupilot waypoint missions, with ros interupts and object avoidance, then eventually to a ros based navigation system. I am running this system in a blueberry field about 1500 ft from the house where I?d like to communicate with the rover to send a video link as well as ntrip messaging.

2020-04-18 15:30
No joy

2020-04-18 15:32

2020-04-18 15:32
Still digging

2020-04-18 15:37
launch file

2020-04-18 16:08
NICE! Do you have any block diagrams of the electronics? Autonomous cane removal in the future or just mow them down? Adding soil amendments ie sulfur?

2020-04-18 16:11
@ That looks cool. Happy to chat given the time I spent a LOT of time with ardurover. I ran multiple missions, but in the end could not tune the steering to follow a straight line any better than +/- 6" to the left/right of the mission waypoints even with RTK GPS. A quick scan looks like the documentation on the steering algorithm is better https://ardupilot.org/dev/docs/rover-L1.html That looks a whole lot like purepursuit which is known to be a very good approach.

2020-04-18 16:19
Bob, I have a lot of ideas along the lines you mentioned above! Once decent navigation is achieved, a lot of possibilities open up. Depending on the range I get with the ubiquity, I may have to create some mobile antenna towers for meshing WiFi around the farm point to point. Cell signal is not reliable where I am at. I have been focusing on the most time intensive tasks, starting with mowing and flailing and then moving to spraying and soil amendments . I started with a wheel chair frame, then moved to this mower (it took a lot to get it running... engine ect). I?d like to move up to a 60 ish hp orchard tractor once some things are farther along . That will open up possibilities for some of the tasks discussed above.

2020-04-18 16:52
It doesn't look like the above launch file is started. Are you getting errors?

2020-04-18 16:52
You need to run both. Your robot which you have running above. See TF tree that just shows odom to base_link.

2020-04-18 16:53
No apparent errors...

2020-04-18 16:54
Is your robot connected to your base computer?

2020-04-18 16:54
"...You need to run both. Your robot which you have running above...." - This is unclear to me.

2020-04-18 16:55
You should see the full lawntractor TF tree. Right now you are only see the robot.

2020-04-18 16:55
Both means your robot and the move_base launch file

2020-04-18 16:56
Q: Is robot connected to base computer? A: Yes, I believe so...

2020-04-18 16:57
When you do $ rostopic list from your base computer do you see the robot topics

2020-04-18 16:58
Yes.

2020-04-18 17:03
Looks good. You will also need to delete line 4 in the move_base launch file. <param name="/use_sim_time" value="true"/>

2020-04-18 17:03
Can you confirm the tractor is meant to be the "master"?

2020-04-18 17:04
Looks great. Try deleting the use_sim_time

2020-04-18 17:07
so obviously I'm looking in the wrong place

2020-04-18 17:09
Hmm right now we are only working with one launch file on the base computer.

2020-04-18 17:10
Can you find this file again? Launch file lawn_tractor_sim.launch

2020-04-18 17:10
Same one we deleted the simulator lines.

2020-04-18 17:10
You mean the lawn_tractor_sim.launch file I think.

2020-04-18 17:12
This confused me...

2020-04-18 17:13
Yes, that was my mistake. I said to delete line 7-10. That was incorrect. It needs to be 4 -10.

2020-04-18 17:13
What about this...

2020-04-18 17:14
Does rviz need to start?

2020-04-18 17:14
RVIZ is what we use to send in a goal to move_base

2020-04-18 17:19
No joy...will reboot and try again...

2020-04-18 17:20
updated launch file

2020-04-18 17:53
cc: @ Progress?

2020-04-18 17:54
It is different than the tf tree in the simulator. Where "base_footprint" appears is different between the two.

2020-04-18 18:03
That is progress. It is different. No simulator now. Yes it looks like base_footprint is orphaned but this will still work.

2020-04-18 18:25
Recording from the lawn tractor meeting: https://youtu.be/jsqcQD7W01M

2020-04-18 18:34
@ I agree with the 6?. The rover I have is roughly 48? wide and keeping it on a good 65? path has been trying. I feel that my small machine in rough fields is 50% the issue. Ardurover was a great introduction and I enjoy the path the group is heading , but in the end I think the ROS Ag developments will be better suited for the project. I would be very interested in taking more about your adventures with ardurover !

2020-04-19 16:53
@ what do you think was the problem that kept you from getting to <6 inches +/-?

2020-04-19 19:50
1. Lack of available documentation from anyone that had accomplished it before. If it had been done, the information was not readily available. 2. The support community to explain the low level workings of the navigation stack was limited at the time. Hopefully that has changed. It appears the code is now more parameter driven and the parameters are exposed. I was trolling deep into the code at the time. 3. ROS has the ability to program where the GPS is in space. I never found that in Ardurover so I was physically moving the GPS around. It was a painful way to test navigation. 4. I believe fundamentally it is the navigation routine. My guess is the authors, if they have not already, could implement purepursuit and it would perform great with RTK GPS.

2020-04-20 11:14
I?d like to add to that as well. My rover is a 3 wheel drive on bumpy ground . The one wheel seems to grab ruts and then need over compensation to pull it out . Second, I have trouble trusting the onboard compass. It is continuously giving error in correct heading. Either way, I?d like to move away from the cube. Focusing on some WiFi antennas, then back to trying to implement a Ros navigation setup on the system

2020-04-24 00:25
Just to answer the question of the block diagram of the electronics. They are pretty straight forward, the pixhawk cube does the heavy lifting by containing the IMU

2020-04-24 01:09
Thanks!


2020-04-25 15:06
Recording from the lawn tractor meeting: https://youtu.be/Cbw17i1go1E

2020-04-29 18:46
@ Here is an example node that reads in a text file of (x y yaw) then publishes the path. https://gist.github.com/droter/cc63dd40b866bcfe3874bb35fa6c46f9 This is an example node of converting LLA to XY https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23 It is using this library http://wiki.ros.org/geonav_transform

2020-04-29 23:29
@ - and if I understand correctly I should use this (https://github.com/ros-agriculture/nmea_navsat_driver) to record the gps positions as I'm driving around? (if I wanted to get the LLA data to convert into XYyaw)

2020-04-29 23:50
Yes, it will publish your gps data on the /fix topic.


2020-05-01 19:33
Recording from the lawn tractor meeting: https://youtu.be/QvlLWKK-07w

2020-05-05 00:18
Trying to look at your video, clicked on the link but just blank no video. Down loaded the file...could not launch it. which app do I need to view it?

2020-05-07 00:29
@ The launch file I _believe_ you will be able to use with the teleop remote kill function is located in this hardware branch of lawn_tractor here: https://github.com/ros-agriculture/lawn_tractor/tree/hw

2020-05-07 02:05
@ Vinny - I'd be curious if you have a diagram like this for move_base? I'm curious how move_base looks from an architecture perspective within the bigger picture of a ROS application. Thanks!

2020-05-07 23:41
Hi Allan, sorry I missed your message. How does this diagram look

2020-05-07 23:42

2020-05-07 23:43
Here is another one for Move base

2020-05-08 01:57
yes - these are the right level of abstraction for me to understand :slightly_smiling_face: without getting lost in the weeds.

2020-05-08 02:03
Maybe the next thing we could do is try to walk through the use case I'm working on that I'm calling 'drive along a series of gps waypoints' and convert that into words that align with move_base or move_base_flex terminology...? For instance; in my wording I would say I have a csv file with a list of gps waypoints in it... what would this be in move_base terminology? nav_msgs/GetMap? global_planner? geometry_msgs/PoseStamped? something else? @

2020-05-08 12:09
Hello everyone. I am doing several steps backwards, because I think I wanted to advance very fast and I was shocked by the reality of my ignorance. 1. Achieve control of the robot with the application of ros for android. Which partially achieved because I only have cmd_vel and I'm still missing the gps and other topics. 2. Achieve a dirty but effective cmd_vel script. I did this and it was nice, here is a video. https://twitter.com/proyectopochito/status/1257030136681152517?s=20 3. Now I am trying to see all the videos available in gps management in ROS and see what I can rescue. 4. I am also trying to work better rviz because it really is the way and it was a mistake to underestimate it. 5. Starting to see the rosbag to try to find the error, by means of the content of the messages and the topics. 6. I am thinking of trying to make a code that performs a kind of check out to know that everything is ok. Unfortunately, I will not be able to attend today's meeting. Thank you all for helping me so much with the project. I am available until before midday if anyone wants to ask something. Bye... PD: I hope everyone has a very good weekend and I hope that successful robot journeys too

2020-05-08 12:51
@ Congrats. Your steering looks very smooth. I put cmd_vel commands in a bash script and they stopped between commands. Did you put your commands in a python program or something else? I would like to do the same.

2020-05-08 12:55

2020-05-08 12:56
and thanks for your comments and support..

2020-05-08 13:03
If you need help with anything, don't hesitate to ask for a hand. I am not the best help but we see what we can do. It helps me a lot to put the robot on a platform to test things, this I was not doing and wasting a lot of time .. as it is in the air, it bends the wheels and does the rest of the things much better and without risk. I am still not very clear about the force settings for forward and reverse gears; It works but not as it should. It is always important to finish the code with the zero return of the gear. my phone is I am in telegram or whasapp. Cheers.. P.S. Many of the problems I have come from the collisions I have with the tractor, so you imagine that having two children, 10 and 7 years old, is all very dangerous. And yes, surely you are going to crash something.

2020-05-08 17:22
Notes from the lawn tractor meeting: 09:37:43 From Matt Droter : Ubiquity Robotics Raspberry Pi Images - https://downloads.ubiquityrobotics.com/pi.html

2020-05-08 18:45
yes - suspending the rover from a hoist works very well for me to test drive it so it doesn't need a big space to drive around - I'm glad to see your doing that too.

2020-05-08 18:50
So the gps messages could be converted into the map frame, and sent as a PoseStamped to the goal topic

2020-05-09 10:30
I like it! That makes sense. Now I have to figure out the details:)

2020-05-09 12:44
Hello, I have some doubts. I was thinking about adjusting the github page a little and adding the examples that I am doing in the wiki part. In general, the idea is to put an example with the simulator and bring that example to real life with the tractor, showing the settings. I do not see it very complicated to carry out and possibly it is important for the user to see the potential. The first example would be "a small advance and stop" and I have almost finished it on my page, it only remains to pass it to English but I have the following doubts .. 1. For a few weeks I have been using the image accessed by vnc. I really found this extremely simple to use and deployed it in minutes. What is the difference with the previous image that we were using. The question is because I think that if there are relevant differences, the page where the simulators are described should be modified to raise the two options. 2. I was thinking of explaining how to save the changes with a docker commit, is that ok? 3. I was thinking of making a more comprehensive introduction to the simulator on the wiki so as not to mess up the main page. Greetings and have a good weekend

2020-05-09 16:02
Thanks rje1974 , ?the idea is to put an example with the simulator and bring that example to real life with the tractor, showing the settings. I do not see it very complicated to carry out and possibly it is important for the user to see the potential.? I for one, really like that idea! It would be nice to experiment with the simulator, the just ?push a button? so to speak, and run it in real time and in a real physical space/environment.

2020-05-09 17:44
Recording from the lawn tractor meeting: https://youtu.be/U9_AEndAsNA

2020-05-09 20:26
Here is an overview of how the parts of the Snapper Comet transmission works. I couldn't find a demo of the actual forward/backward speed control. https://www.youtube.com/watch?v=MSAmpdQwFHs

2020-05-10 18:20
Might be a little overkill, but I am going to use this to pull the choke cable of a mower. ASMC 04 servo . I sprayed the board with some conformal coating and printed a small box to help keep it dry

2020-05-10 18:32
https://www.harborfreight.com/300-lb-ATVLawn-Mower-Lift-61523.html?ccdenc=eyJjb2RlIjoiMzkzMTgyNjgiLCJza3UiOiI2MTUyMyIsImlzIjoiNzQuOTkiLCJwcm9kdWN0X2lk%0D%0AIjoiMTAxMTkifQ%3D%3D%0D%0A&cid=paid_google%7C*PLA+-+Top+SKUs+-+All+%28Branded%29%7CLawn+Mower+Lift%7C61523&utm_source=google&utm_medium=cpc&utm_campaign=*PLA+-+Top+SKUs+-+All+%28Branded%29&utm_content=Lawn+Mower+Lift&gclid=Cj0KCQjwzN71BRCOARIsAF8pjfhRW19F7Ex7myXiKgP-32R5w1Fg9tFYpzHZpnUZlC5YsAStKqNAbhIaAqxcEALw_wcB. This works well for lifting lawn mowers

2020-05-11 21:36
@ What brand of wiring connector is that? Just curious.

2020-05-11 21:55
Deutsch, expensive, but I have them close by easy access


2020-05-11 22:07
Oh wow ! At volume the connector is roughly 2 dollars, 4 ish with pins and insert.

2020-05-11 22:11
I was not completely fair. The link I found had a crimp tool included.

2020-05-13 14:39
Hi there.. I think I have a problem with this wheel sensor. Which is the best way to test it..? I was putting a screwdriver In front of the orange part and I'm not getting the flash light from the back of the sensor.. is there a better way..? Thanks

2020-05-13 14:42
Do you only have one? Is this the first time you have used it?


2020-05-13 14:48
That is the code I used to do a simple test

2020-05-13 14:57
Thanks. Yes I have only one. Las week I bought 3 other and I was thinking in putting them in the next realize

2020-05-15 14:35
In case you have not seen it: http://www.mobotsoft.com/?page_id=345

2020-05-15 17:12
Notes from the lawn tractor meeting: 09:24:58 From Al Jones : https://github.com/CearLab/nmea_tcp_driver 09:25:30 From Matt Droter : http://wiki.ros.org/nmea_navsat_driver 09:28:44 From Al Jones : $ git clone https://github.com/ros-agriculture/nmea_navsat_driver.git 09:41:35 From Matt Droter : rosbag files http://wiki.ros.org/rosbag 09:44:19 From Matt Droter : Converter from ros bag to csv https://github.com/AtsushiSakai/rosbag_to_csv 09:46:06 From Matt Droter : rqt_bag provides a GUI plugin for displaying and replaying ROS bag files. http://wiki.ros.org/rqt_bag 09:47:03 From Matt Droter : web-based rosbag visualization libraries https://webviz.io/

2020-05-16 14:38
I mentioned on the call using a small python program on RPi to read serial output statements from the Teensy. Here it is: `#!/usr/bin/env python3` `#` `# to make this executable run $ chmod +x receive_left_odom.py` `# to execute, run $ ./receive_left_odom.py /dev/odom_left (aka ttyACM0)` `import serial` `if __name__ == '__main__':` `print('Please wait while the program is loading...')` `#ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)` `ser = serial.Serial('/dev/odom_left', 9600, timeout=1)` `ser.flush()` `print('at end of flush...')` `while True:` `if http://ser.in_waiting > 0:` `line = ser.readline().decode('utf-8').rstrip()` `print(line)`

2020-05-16 17:55
As Matt mentioned, you can do this: `$cat /dev/ttyACM0` He also mentioned loading minicom. Then you can do this: `$minicom -D /dev/ttyACM0` to get a full terminal. acm0 type port does not use baud rate. So the "cat" may not work directly on a /dev/ttyUSB0 port. Because the baud rate may not match. You can specify baud rate on the minicom line, but you would have to look that up...

2020-05-16 18:36
Recording from the lawn tractor meeting: https://youtu.be/TJyPKPW6_q8

2020-05-17 01:42
@ Using gist is a nice tip. Thank you. Very easy to post code. https://gist.github.com/jones2126

2020-05-17 19:52
Hi, I'm trying nmea_navsat_driver and i get this error.. import libnmea_navsat_driver.nodes.nmea_serial_driver ImportError: No module named nodes.nmea_serial_driver I'm lost..

2020-05-17 20:03
These were my steps: On Rpi, for GPS testing: ? PuTTy into RPi ? $ cd catkin_ws/src ? $ git clone https://github.com/ros-agriculture/nmea_navsat_driver.git ? cd .. ? From ~/catkin_ws, $ catkin_make ? $ source devel/setup.bash $ rospack find nmea_navsat_driver #  returns /home/al/catkin_ws/src/nmea_navsat_drive

2020-05-17 20:03
If the rospack find does not work then it did not get installed cleanly.

2020-05-17 20:06
It works.. But i will try again with your steps. Thanks

2020-05-17 20:06
maybe its something with the swiftnav

2020-05-17 20:07
My steps are only to install the package, not to configure it.

2020-05-17 20:08
if rospack find nmea_navsat_driver returns a valid response then you have the package installed

2020-05-17 20:09
yes, i think its something with dependencies..

2020-05-17 20:11
al.. how do you run the nmea_navsat_driver..?

2020-05-17 20:16
from a launch file that contains: `<launch>` `<node name="gps" pkg="nmea_navsat_driver" type="nmea_topic_serial_reader">` `<param name="port" value="/dev/gps" />` `<param name="baud" value="115200" />` `</node>` `<node name="nmea" pkg="nmea_navsat_driver" type="nmea_topic_driver">` `<param name="useRMC" value="True" />` `</node>`

2020-05-17 20:16
:+1:

2020-05-17 20:29
Al, which gps do you have..?

2020-05-17 20:31

2020-05-18 02:59
That?s a python error - need to install the module first - I can look more tomorrow for the specific module and a command to install it.

2020-05-18 15:48
I will use a fresh image of ubiquiti and re install all

2020-05-18 18:04
Get it working.. The rest do not work as before but now we both are really in the same path..


2020-05-19 12:23
Thanks Allan, I'm always bringing this problems with python, this is one of the reasons I like docker, so I decided to go with a clean install over a fresh ubiquiti image and this problem was solved.. Now I have others, as always when you do mayor changes..

2020-05-19 14:50
Here's the code to install it -> ```sudo apt install ros-<ros-distro>-nmea-navsat-driver``` https://answers.ros.org/question/329382/help-with-unable-to-import-python-module-modulenotfounderror-no-module-named/

2020-05-19 18:31
Thanks @ for putting together the installation and running documentation. I added it to the package. https://github.com/ros-agriculture/nmea_navsat_driver Please feel free to update or comment if it needs correcting.

2020-05-19 18:34
Here are the installation instructions from Al. We don't yet have our changes merged with the main ROS package. Until then we will need to install from source and build the package locally.


2020-05-19 20:15
*cmd_vel publisher using text file input....*I am at the point of field testing and wanted a way to send a set of linear.x/angular.z values and publish on cmd_vel for testing. The good news is the python script worked. The bad news is field testing in hot, bumpy, Texas ground has uncovered a few things that need addressed. Most notably that my steer angle sensor will not survive in the current design. The python script is here. https://gist.github.com/jones2126/8c7cacccf426cd36f965f23a71ad4dce Thanks @ for the initial script. I simply adding reading from the text file.

2020-05-19 21:34
Great news, Al... Testing and testing.. I also get the things working.. I used your notes.. Now I've got a fresh install over the tractor and I learn a lot of things..

2020-05-20 05:30
Al if you wanted a bit more control then you could have a website with a virtual joystick on your phone. I have written a blog post on this last year: https://msadowski.github.io/ros-web-tutorial-pt1/

2020-05-22 17:21
Notes from the community meeting: 09:20:46 From Matt Droter : Slam Toolbox http://wiki.ros.org/slam_toolbox 09:32:54 From Jeff Sampson : http://wiki.ros.org/noetic/Installation/Debian 09:34:16 From Jeff Sampson : https://index.ros.org/doc/ros2/Installation/Foxy/ 09:34:35 From Jeff Sampson : https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/ 09:35:12 From Jeff Sampson : https://blog.roverrobotics.com/ros-2-is-it-time-to-switch-tutorial-included/ 09:42:23 From Matt Droter : Raspberry Pi ROS Image - https://downloads.ubiquityrobotics.com/pi.html 09:43:08 From Jeff Sampson : https://ubuntu.com/download/raspberry-pi 09:45:41 From Jeff Sampson : http://wiki.ros.org/ROS/NetworkSetup 10:06:44 From Jeff Sampson : https://www.pjrc.com/store/index.html

2020-05-22 19:23

2020-05-23 17:34
Recording from the lawn tractor meeting: https://youtu.be/FdCekkVHqIE

2020-05-23 22:28
@ You mentioned what would be needed for the external I/O. That is a great question. One example use case. I have two inductive sensors to measure wheel speed (three wires: 6-36 volts, ground and signal) and a servo (three wires: power, ground and signal) to control the hydrostatic lever. Are all of these plugged into the same device and then this device talks CAN through the vehicle bus (four wires: 12 volts, ground, CAN_H, CAN_L) back to the computer?

2020-05-24 15:47
@ That is an example of a custom or specific controller. If we look at more general examples, I have a giant servo for steering and I could create a custom controller for that. (PWM for servo, voltage for angle feedback, voltage for current, digital inputs for limit switches...) With a little manipulation it could drive the electric power steering instead. (Add PWM and direction for Cytron driver, use the voltage input for feed back pot, maybe have limit switches) Or use the same controller for your transmission example. (PWM for servo, limit switch inputs to connect your magnetic sensors, maybe use servo voltage for angle feed back, maybe another digital input for your reverse switch) So a single box may work for any of those 3 situations. OR... use (or make) something like the Lab Jack that Kyler uses. That gives you general purpose I/O controlled from a communication interface. You had posted something else on a remote I.O device. The Danfoss Plus1 controllers are an example of industrial quality general purpose programmable controllers. It is a rugged box with buffered I/O and one or more CAN busses and will run directly from your vehicle power.

2020-05-26 13:08
Hello, I have some doubts about the safety systems of the tractor .. Where can I read something deeper ...? I want to kill myself but I realized that when I executed the launch commands, I think I made the error of invoking the joystick to get security and not pressing the dead man to make the scritps not work ..

2020-05-26 13:17
@ Looks very cool. Have not had a chance to try it out, but thanks for sharing. I have a bluetooth joystick I was going to use for up close joystick control, but this might be a better option.

2020-05-26 16:30
You may have the wrong button mapped on your joystick. You can view the joystick message with rostopic echo. Then watch the numbers as you press each button. So your teleop-joystick node has to match the dead man fucntion has to match the button you are pressing. Or is that not the problem you are having?

2020-05-26 21:00
Thanks Jeff, I will go with that as a first steep.. I think that the question should be: As you have multiple publisher in a topic like (like a joystick and a script) how that is handle by ROS and the Tractor System..? I notice that working with the android ROS control interference problems appear and there I have my first hint that I was doing something wrong.

2020-05-26 21:05
We use Daniel Snider's cmd_vel_mux. It will take in multiple publishers and then only output one to /cmd_vel https://github.com/ros-agriculture/tractor_teleop

2020-05-29 17:12
Notes from the lawn tractor meeting: 09:12:49 From Al Jones : https://www.youtube.com/watch?v=IxuU5L2MEII&t=1153s

2020-05-30 00:33
@ (Sorry, I forgot to look this up...) Here is the code for my encoders that I was talking about. It works with 16-bit values. I'm not sure it will work with 14-bit values. Just print the enc1_delta and pos1 value each time through the loop to see if it is working for your sensor. ```// Code to read a 16-bit register, deal with rollover, accumulate total distance. uint16_t qenc1; uint16_t qenc1_last; int16_t qenc1_delta; int32_t pos1; void update_encoder(void) { qenc1 = encoder; qenc1_delta = qenc1 - qenc1_last; // You can swap these to reverse direction qenc1_last = qenc1; // Update the absolute position values. (Position of this encoder since CPU reset.) pos1 += qenc1_delta; }```

2020-05-30 19:51
Recording from the lawn tractor meeting: https://youtu.be/qp2YHZ1APMc


2020-05-31 14:44
I turned the steering motor from center to left to trigger a rollover. Results attached.

2020-05-31 15:04
Probably what I should figure out...


2020-05-31 18:08
@ Something goofy is going on. You can not have a signed 32-bit with a value of 18 and add a value of -2 and get anything other than 16! Maybe the Arduino Println is not interpreting pos1 as a signed 32-bit integer. Maybe you have to add something on the print line to force it to the larger integer size. Maybe try this and see how many hex characters it prints out. (4 for 16-bit or 8 for 32-bit) `Serial.println(pos1, HEX);` Maybe C is not promoting the 16-bit value correctly. Maybe try this instead: `pos1 = (int32_t)qenc1_delta + pos1;`

2020-05-31 18:30
Not that it will change your thinking, but my Serial prints are occurring at 0.5 HZ while the polling of the encoder is occurring at 10 Hz.

2020-05-31 19:16
@ I just got a Teensy and wrote a simple loop. Adding a int16_t to a int32_t appears to work. You might try putting your print statements after "pos1 += qenc1_delta;" to see if that tells you anything new. Then they are happening at the same rate.

2020-05-31 19:45
@ Actually, do it like this: ```if (millis() - prev_time_poll_AS5048B >= poll_AS5048B_Interval) { qenc1 = AMS_AS5048B_readReg16(); qenc1_delta = qenc1 - qenc1_last; // You can swap these to reverse direction // Update the absolute position values. (Position of this encoder since CPU reset.) pos1 += qenc1_delta; Serial.print("qenc1: "); Serial.print(qenc1); Serial.print(" qenc1_last: "); Serial.print(qenc1_last); Serial.print(", qenc1_delta: "); Serial.print(qenc1_delta); Serial.print(", pos1: "); Serial.println(pos1); qenc1_last = qenc1; prev_time_poll_AS5048B = millis(); }``` then you will see the value of qenc_last before it gets overwriten. Maybe slow your loop rate down so they come out at a reasonable rate...

2020-05-31 21:02
Code is updated in gist. Change encoder polling to 1 HZ and other print function to 0.01 HZ. Started at center (~8000) and slowly turned left until I triggered a rollover.

2020-05-31 21:09
btw, @ Thank you for spending time on this. It is very kind of you.

2020-05-31 21:26
Comment out line 66. Comment out line 84. And run it again.

2020-05-31 21:35
Your wish is my command....

2020-05-31 21:57
Okay, the line (about halfway down, as it rolls over) is the problem child. It has 16245,353,15892,16245. Why does it work for mine and not your's? Mine has 16-bit numbers. Your's has 14-bit numbers (in a 16-bit field). I will have to think on this...

2020-05-31 22:46
Okay, it works with 16-bit numbers but not 14-bit numbers. Now I have to figure out why... ```14-bit 0 5 0 5 5 1 4 5 -1 4 2 3 4 -1 3 3 2 3 -1 2 4 1 2 -1 1 5 0 1 -1 0 6 16383 0 16383 16383 7 16382 16383 -1 16382 8 16381 16382 -1 16381 9 16380 16381 -1 16380``` [Now Slack won't let me use two code blocks...] 16-bit 0 5 0 5 5 1 4 5 -1 4 2 3 4 -1 3 3 2 3 -1 2 4 1 2 -1 1 5 0 1 -1 0 6 65535 0 -1 -1 7 65534 65535 -1 -2 8 65533 65534 -1 -3 9 65532 65533 -1 -4

2020-05-31 23:15
Try this... Add these in the global variable section: uint16_t qenc1X4; uint16_t qenc1_lastX4; int16_t qenc1_deltaX4; Then cut this code out: qenc1 = AMS_AS5048B_readReg16(); qenc1_delta = qenc1 - qenc1_last; // You can swap these to reverse direction qenc1_last = qenc1; // Update the absolute position values. (Position of this encoder since CPU reset.) pos1 += qenc1_delta; //pos1 = (int32_t)qenc1_delta + pos1; With this code: qenc1 = AMS_AS5048B_readReg16(); qenc1X4 = qenc1 << 2; qenc1_lastX4 = qenc1_last << 2; qenc1_deltaX4 = (qenc1X4 - qenc1_lastX4); qenc1_delta = qenc1_deltaX4 >> 2; // Update the absolute position values. (Position of this encoder since CPU reset.) pos1 += qenc1_delta; //pos1 = (int32_t)qenc1_delta + pos1; See if that works any better. (If I didn't screw up any of the variable names.) It forces the 14-bit values to be 16-bit values. This seems to work in my test. The number on the right is the final pos1 output. 0 5 20 0 0 20 5 5 1 4 16 5 20 -4 -1 4 2 3 12 4 16 -4 -1 3 3 2 8 3 12 -4 -1 2 4 1 4 2 8 -4 -1 1 5 0 0 1 4 -4 -1 0 6 16383 65532 0 0 -4 -1 -1 7 16382 65528 16383 65532 -4 -1 -2 8 16381 65524 16382 65528 -4 -1 -3 9 16380 65520 16381 65524 -4 -1 -4

2020-06-02 00:47
Came across this project on github for an autonomous lawn mower. Some cool packages https://github.com/jotyger/auto_mow

2020-06-05 17:53
Recording from the lawn tractor meeting: https://youtu.be/ZbTqxA4wqE4

2020-06-05 17:54
Notes from the lawn tractor meeting: 08:59:45 From Al Jones : https://sqpn.com/2019/04/mys036-the-mystery-of-skinwalker-ranch/ 09:17:31 From Matt Droter : https://en.wikipedia.org/wiki/Bitwise_operation 09:36:28 From Jeff Sampson : https://clearpathrobotics.com/news/ 09:36:43 From Al Jones : https://clearpathrobotics.com/blog/ 09:40:37 From Jeff Sampson : Speaking of squirrles: https://www.youtube.com/watch?v=hFZFjoX2cGg 09:44:14 From Doug Thorpe : https://grafana.com/

2020-06-05 18:19
I see the date is backwards on the video title. It should be 06052020, not 05062020... Don't be fooled. :slightly_smiling_face:

2020-06-05 23:25
https://gist.github.com/jones2126/f5bb23610f21100868612bc51b4b20f5 updated. I need to do more testing, but your "magic" code looks like it is working.

2020-06-05 23:37
And if you turn it more than one turn in the positive direction it should just keep getting bigger (and not roll over to zero). And if you go in negative direction past zero and continue to turn it should keep getting more negative.

2020-06-08 21:47
Hi All, I filed an issue on the lawn tractor repo, https://github.com/ros-agriculture/lawn_tractor/issues/15 but it seems like the default Rotate Recovery plugin for Move Base / Move Base Flex is not working as expected to get the lawn tractor 'unstuck' from a collision with the simulated wall.

2020-06-09 00:25
Lawn tractor #3 engine rebuild.

2020-06-09 01:01
Well there is your problem... when you opened it all of those tools fell out. I'm surprised it ran with tools inside. Did it not run before this? Or were you bored? Pay attention if it has an alternator. It would probably be under the flywheel with one or two wires coming out. I'm thinking you could use the AC signal to measure RPM. I was looking at mine and it has two wires coming out. One goes to the ignition switch so I assume it is DC. I haven't tracked down the other wire. But if mine has a voltage regultor module it must be under the flywheel cover. I found other (cheap) implementations on YouTube. They just have a diode between the stator coils and the DC power system. Your Cub Cadet probably has a voltage regulator module on the outside where you can get to it.

2020-06-09 02:07
Haha Yes. It had a bad oil gasket leak. The engine did start before I took it apart. We'll see how many bolts are left over after it gets back together.

2020-06-09 07:25
Save money on bolts, the more bolts you have left over after assembly the better, you can use them on the next Lawn Tractor

2020-06-09 20:40
It turns out that the lawn tractor class (12hp to 20hp single cylinder) of Briggs and Stratton engines have one of three alternators. Mine has the simplest (crapiest) version. https://www.amazon.com/Briggs-Stratton-696459-Alternator-Replacement/dp/B002WNR9HK/ref=cm_cr_arp_d_product_top?ie=UTF8 One lead has a diode in series and the DC side connects directly to your 12v electrical system. No regulation. On my lawn tractor the other lead connects to headlights and they run on AC. I put a scope on my headlights. I get a sine wave (I assumed it would be pulses but either will work). At idle I get 308Hz. At high speed I get 532Hz. So a simple signal conditioning circuit should allow a microcontroller to read the frequency and convert to RPM. The images would have been better if I wasn't balancing my scope on my lap in the sunlight.

2020-06-09 20:44
.

2020-06-09 21:13
The seat safety switch on my John Deere Sabre lawn tractor has me completely baffled. It appears to be a simple on/off push button. It is either 0 ohms or infinite ohms. There does not appear to be an internal diode. But the engine dies if I unplug it. I don't think it runs if I short it (because that indicates you stood up). So I will probably just take the switch out and wrap electrical tape around it so it thinks I am sitting on the seat. But I can't figure out electrically how the damn thing works...

2020-06-09 23:23
Not sure if it helps. The cub cadet seat switch has 3 green and 2 yellow wires going into it. To by pass it I had to first remove the odd metal piece and them jump the green and then jump the yellow. This btw, is no longer needed, but I have forgotten what I did to cut it out of the loop.

2020-06-09 23:50
I found a page on the 4-wire switches. But I have a two wire switch. I may just bypass everything. I think the only smarts in the whole thing is a relay. Maybe there are other relays and control modules if I dig further...

2020-06-12 17:08
Notes from the lawn tractor meeting: 09:28:55 From Al Jones : https://www.tractorhouse.com/listings/farm-equipment/auction-results/28712977/john-deere-sabre-1542hs 09:31:08 From Jeff Sampson : https://www.mpja.com/High-Torque-DC-Servo-Motor_Driver-180g_cm/productinfo/34108+MD/ 09:42:55 From Matt Droter : RowBot https://www.youtube.com/watch?v=_Jhj_EIaqbI 09:53:34 From Matt Droter : Great RTK GPS https://www.ardusimple.com/ 10:06:15 From Matt Droter : ROS Image for Raspberry Pi https://downloads.ubiquityrobotics.com/pi.html

2020-06-12 17:24
Found my bagfile from testing last night. Uploaded it here. https://drive.google.com/file/d/1AjbNUeQaMLVuPQ00fOS-rBUvRr9704l5/view?usp=sharing Now need to review.

2020-06-13 17:32
Recording of the lawn tractor meeting: https://youtu.be/OED92oZw9ts

2020-06-14 13:37
Testing the Vishay 553 3-turn pot as a secondary angle sensor to supplement the magnetic rotation sensor today. Just started. Assume lots will have to be worked out.

2020-06-18 17:28
Hi @ Do you have the STL file for the servo case that you can share?

2020-06-19 17:08

2020-06-20 15:56
Recording from the lawn tractor meeting: https://youtu.be/KepqC3-hZqM

2020-06-22 16:22
@ This is the sheet that came with motor I bought, but have not messed with yet. Are your measurements the same? If so, I can try and mock something up.

2020-06-22 16:29
Yes, that is the servo. These mounting plates that Jeff found also fit and work well https://www.ebay.com/itm/DC12-24V-180kg-cm-110kg-cm-Servo-Motor-High-Power-Torque-Robot-Alloy-ARM-Plate/312949236969

2020-06-22 23:47
@ Do you have access to a 3d printer to test this hole pattern test?

2020-06-22 23:48
I will try it here as well

2020-06-23 00:54
That is cool. What do you think about a full enclosure? Won't be waterproof but maybe splashproof?

2020-06-23 00:55
Not a problem. Step 1 is to get the hole pattern correct.

2020-06-23 11:38
@ A little progress. Don't print the stl above. The shaft diameter is too small. I'll update. 1. What size bolt hole do you need for mounting? 2. Are going to use a socket to tighten? If so, there will need to be clearance between the box enclosure and the socket which means I need to spread out the holes a bit. 3. For the box enclosure are you going to use a Molex connector?

2020-06-23 17:14
That is a good question. Might try one of these to start: Cable Gland -LOKMAN 34 Pack Plastic Waterproof Adjustable 3-16mm Cable https://www.amazon.com/dp/B077R1RT2T/ref=cm_sw_r_tw_dp_x_NGJ8EbZ7SMWR7

2020-06-25 11:15
@ Updated. Base bolt hole 9mm; Added corner holes to attach the motor cover. I think this version is ready for a test.

2020-06-26 17:16
Notes from the lawn tractor meeting: 09:22:01 From Matt Droter : Terminator tutorial - https://gnometerminator.blogspot.com/p/introduction.html 09:33:17 From Matt Droter : Auto guidance app https://play.google.com/store/apps/details?id=com.agri_info_design.AgriBusNavi&hl=en_US 09:37:04 From Matt Droter : https://agri-info-design.com/ 09:43:28 From Al Jones : https://www.amazon.co.jp/dp/B07RXL7CMW?m=A1P5FI8T7UXNH9 09:43:37 From Matt Droter : AgOpenGPS https://agopengps.jimdosite.com/ 10:03:43 From Jeff Sampson : My YouTube channel: https://www.youtube.com/user/jws8675309 10:06:03 From Matt Droter : https://github.com/ros-agriculture/tractor_sim/wiki

2020-06-26 22:47
Recording from the lawn tractor meeting: https://youtu.be/UUlvECz8mEY

2020-06-27 17:48
@ How is the robot tuning?

2020-06-27 17:51
Thanks for asking. Fighting with Arduino clones at the moment while it rains.

2020-06-28 20:49
@ To _run in the real world, just confirming, I do not want to start stageros, correct? This is from the lawn_tractor launch file._


2020-06-28 21:05
The transform from odom to base_link comes from your gps_odom (localization) node.

2020-06-28 21:11
How do I implement that?

2020-06-28 21:12
Google is not being helpful

2020-06-28 21:14
You will need to turn on your robot. It needs to get the gps position. You mentioned that you have a rosbag with odometry. Your odometry node provides the location and transform. See this example https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23

2020-06-28 21:18
Tractor is running; GPS receiving;

2020-06-28 21:19
fix topic

2020-06-28 21:21
But odom is not publishing....

2020-06-28 21:24
I started your modified driver, but something is obviously not working...

2020-06-28 22:04
So I think my problem statement for the moment is /heading is not being published although /fix is.

2020-06-28 22:10
I launch the driver and a python script to also output the raw nmea sentence ... `<launch>` `<node name="gps" pkg="nmea_navsat_driver" type="nmea_topic_serial_reader">` `<param name="port" value="/dev/gps" />` `<param name="baud" value="115200" />` `</node>` `<node name="nmea" pkg="nmea_navsat_driver" type="nmea_topic_driver">` `<param name="useRMC" value="True" />` `</node>` `<node pkg="beginner_tutorials" name="read_nmea5" type="read_nmea5.py" output="screen"></node>` `</launch>`

2020-06-28 22:13
@ Correct? <param name="useRMC" value="True" />


2020-06-30 11:09
Step files for anyone that wants to further edit this.


2020-07-03 22:48
Recording from the lawn tractor meeting: https://youtu.be/XC-co_TbFMs

2020-07-04 11:32
So I am now using the generic launch file which starts type="nmea_serial_driver" described in section 4.2 @ https://wiki.ros.org/nmea_navsat_driver instead of previously starting type="nmea_topic_driver" (4.1) and type="nmea_topic_serial_reader" (4.3). Not sure why, but /heading periodically stops providing messages. /fix seems stable. Screenshot is from rostopic hz /heading.....Still pressing on.

2020-07-04 11:43
Trying to run gps_odom.py Well that's not good...

2020-07-04 11:49
fyi

2020-07-04 11:51
Well this isn't good...

2020-07-04 12:25
Still groping in the dark over here....

2020-07-04 12:27
rqt_graph

2020-07-04 12:31
rvis

2020-07-04 12:40
So I guess my problem statement at the moment is odom is not feeding into base_footprint....

2020-07-04 14:18
maybe....

2020-07-04 14:20
still need to check /heading and /odom...

2020-07-04 14:22
odom is at least putting something out....

2020-07-04 14:27
Hmmm...

2020-07-04 16:08
So my problem statement at the moment is although /heading and /fix appear to be publishing, when the tractor is moved there is no corresponding movement in rvis. I made a 90 degree turn plus moved the tractor ~20ft and the image did not change in rvis.

2020-07-04 18:55
reading...https://answers.ros.org/question/11682/robot_pose_ekf-with-an-external-sensor/ Still no luck. I'm assuming something in the URDF. @ Any suggestions?

2020-07-05 02:04
Good to hear you have /fix and /heading. Next work on the gps_odom.py node. It subscribes to /fix and /heading and outputs an odometry message.

2020-07-05 11:19
@ Yes odom is publishing.

2020-07-08 14:27
Check out Jesse Brockmann's Autonomous Riding Lawnmower - Phase One Update - https://www.sparkfun.com/news/3329

2020-07-12 02:08
Notes from the lawn tractor meeting: 09:45:59 From Jeff Sampson : A random example of a battery disconnect switch: https://www.summitracing.com/parts/hla-002843011

2020-07-12 02:08
Recording from the lawn tractor meeting: https://youtu.be/sye8cSa1-iM

2020-07-13 19:21

2020-07-13 19:27
Multi-robot reference at 23:20

2020-07-13 20:16
Yes, I can view it. I see 23:20 shows multi robot collision avoidance.

2020-07-17 16:58
Notes from the lawn tractor meeting: 09:45:02 From Jeff Sampson : Automotive gyroscope. Single axis. https://www.digchip.com/datasheets/parts/datasheet/414/HZ1-90-100A-pdf.php 09:46:45 From Al Jones : https://www.autoblog.com/2020/06/08/harley-davidson-self-balancing-motorcycle-patent/

2020-07-18 17:19
Recording from the lawn tractor meeting: https://youtu.be/7dsjMCiTGAs

2020-07-18 22:45
Testing update... /odom has published, but it is not publishing consistently. The bagfile https://drive.google.com/file/d/1YqV4Fx1tlsgaCJU98mfv6v6fvx9wUh7o/view?usp=sharing. Although /odom is not published consistently there is a brief period between bagtime 1595084193 and bagtime 1595084206 where pose: position: x and y appear to be publishing correctly.  Then It stops.  This is what odom_node.log shows: `[rospy.client][INFO] 2020-07-18 10:34:53,804: init_node, name[/odom_node], pid[2070]` `[xmlrpc][INFO] 2020-07-18 10:34:53,810: XML-RPC server binding to 0.0.0.0:0` `[rospy.init][INFO] 2020-07-18 10:34:53,812: ROS Slave URI: [http://tractor_aj:36489/]` `[xmlrpc][INFO] 2020-07-18 10:34:53,811: Started XML-RPC server [http://tractor_aj:36489/]` `[rospy.impl.masterslave][INFO] 2020-07-18 10:34:53,814: _ready: http://tractor_aj:36489/` `[rospy.registration][INFO] 2020-07-18 10:34:53,817: Registering with master node http://tractor_aj:11311` `[xmlrpc][INFO] 2020-07-18 10:34:53,818: xml rpc node: starting XML-RPC server` `[rospy.init][INFO] 2020-07-18 10:34:53,914: registered with master` `[rospy.rosout][INFO] 2020-07-18 10:34:53,915: initializing /rosout core topic` `[rospy.rosout][INFO] 2020-07-18 10:34:53,926: connected to core topic /rosout` `[rospy.simtime][INFO] 2020-07-18 10:34:53,936: /use_sim_time is not set, will not subscribe to simulated time [/clock] topic` `[rospy.internal][INFO] 2020-07-18 10:34:54,001: topic[/fix] adding connection to [http://tractor_aj:39841/], count 0` `[rospy.internal][INFO] 2020-07-18 10:34:54,002: topic[/heading] adding connection to [http://tractor_aj:39841/], count 0` `[rosout][ERROR] 2020-07-18 10:34:54,082: bad callback: <bound method MainClass.gps_callback of <__main__.MainClass instance at 0x752bb328>>` `Traceback (most recent call last):` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.py", line 750, in _invoke_callback` `cb(msg)` `File "/home/ubuntu/catkin_ws/src/beginner_tutorials/scripts/gps_odom.py", line 82, in gps_callback` `"odom"` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf/broadcaster.py", line 63, in sendTransform` `t.transform.rotation.x = rotation[0]` `IndexError: tuple index out of range` `[rospy.internal][INFO] 2020-07-18 10:34:54,153: topic[/rosout] adding connection to [/rosout], count 0` `[rospy.internal][INFO] 2020-07-18 10:41:15,818: topic[/tf] adding connection to [/view_frames_3914_1595083275527], count 0` `[rosout][WARNING] 2020-07-18 10:41:20,897: Inbound TCP/IP connection failed: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.` `[rospy.internal][ERROR] 2020-07-18 10:41:20,911: Inbound TCP/IP connection failed:` `Traceback (most recent call last):` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 321, in _tcp_server_callback` `header = read_ros_handshake_header(sock, StringIO(), buff_size)` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosgraph/network.py", line 364, in read_ros_handshake_header` `raise ROSHandshakeException("connection from sender terminated before handshake header received. %s bytes were received. Please check sender for additional details."%b.tell())` `ROSHandshakeException: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.` `[rospy.internal][INFO] 2020-07-18 10:41:21,263: topic[/tf] removing connection to /view_frames_3914_1595083275527` `[rospy.internal][INFO] 2020-07-18 10:41:43,410: topic[/tf] adding connection to [/view_frames_3954_1595083303076], count 0` `[rospy.internal][INFO] 2020-07-18 10:41:48,662: topic[/tf] removing connection to /view_frames_3954_1595083303076` `[rospy.internal][INFO] 2020-07-18 10:42:27,166: topic[/tf] adding connection to [/view_frames_4030_1595083346819], count 0` `[rospy.internal][INFO] 2020-07-18 10:42:32,414: topic[/tf] removing connection to /view_frames_4030_1595083346819` `[rospy.internal][INFO] 2020-07-18 10:53:11,601: topic[/tf] adding connection to [/move_base_flex], count 0` `[rospy.internal][INFO] 2020-07-18 10:53:11,641: topic[/odom] adding connection to [/odom_to_lla], count 0` `[rospy.internal][INFO] 2020-07-18 10:53:12,107: topic[/tf] adding connection to [/tractor_viz], count 1` `[rospy.internal][INFO] 2020-07-18 10:53:20,731: topic[/odom] adding connection to [/move_base_flex], count 1` `[rospy.internal][INFO] 2020-07-18 10:54:24,822: topic[/odom] adding connection to [/record_1595084064169156694], count 2` `[rospy.internal][INFO] 2020-07-18 10:54:26,262: topic[/rosout] adding connection to [/record_1595084064169156694], count 1` `[rospy.internal][INFO] 2020-07-18 10:54:26,400: topic[/tf] adding connection to [/record_1595084064169156694], count 2` `[rospy.internal][INFO] 2020-07-18 10:55:43,312: topic[/odom] adding connection to [/rostopic_4741_1595084142893], count 3` `[rosout][WARNING] 2020-07-18 11:01:58,751: Inbound TCP/IP connection failed: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.` `[rospy.internal][ERROR] 2020-07-18 11:01:58,762: Inbound TCP/IP connection failed:` `Traceback (most recent call last):` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 321, in _tcp_server_callback` `header = read_ros_handshake_header(sock, StringIO(), buff_size)` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosgraph/network.py", line 364, in read_ros_handshake_header` `raise ROSHandshakeException("connection from sender terminated before handshake header received. %s bytes were received. Please check sender for additional details."%b.tell())` `ROSHandshakeException: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.` `[rospy.internal][INFO] 2020-07-18 11:01:58,802: topic[/odom] removing connection to /rostopic_4741_1595084142893` `[rospy.internal][INFO] 2020-07-18 11:02:04,188: topic[/odom] removing connection to /record_1595084064169156694` `[rospy.internal][INFO] 2020-07-18 11:02:04,597: topic[/rosout] removing connection to /record_1595084064169156694` `[rospy.internal][INFO] 2020-07-18 11:02:04,598: topic[/tf] removing connection to /record_1595084064169156694` `[rospy.internal][INFO] 2020-07-18 11:02:24,387: topic[/odom] removing connection to /odom_to_lla` `[rospy.internal][INFO] 2020-07-18 11:02:24,865: topic[/tf] removing connection to /tractor_viz` `[rospy.internal][INFO] 2020-07-18 11:02:25,624: topic[/tf] removing connection to /move_base_flex` `[rospy.internal][INFO] 2020-07-18 11:02:25,787: topic[/odom] removing connection to /move_base_flex` `[rospy.core][INFO] 2020-07-18 11:02:34,158: signal_shutdown [signal-2]` `[rospy.internal][INFO] 2020-07-18 11:02:34,193: topic[/rosout] removing connection to /rosout` `[rospy.internal][INFO] 2020-07-18 11:02:34,197: topic[/fix] removing connection to http://tractor_aj:39841/` `[rospy.internal][WARNING] 2020-07-18 11:02:34,199: Unknown error initiating TCP/IP socket to tractor_aj:38127 (http://tractor_aj:39841/): Traceback (most recent call last):` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 558, in connect` `self.local_endpoint = self.socket.getsockname()` `AttributeError: 'NoneType' object has no attribute 'getsockname'` `[rospy.internal][INFO] 2020-07-18 11:02:34,201: topic[/heading] removing connection to http://tractor_aj:39841/` `[rospy.impl.masterslave][INFO] 2020-07-18 11:02:34,204: signal-2` `[rosout][WARNING] 2020-07-18 11:02:34,773: GPS odom shutting down.` `[rospy.core][INFO] 2020-07-18 11:02:34,775: signal_shutdown [atexit]` `[rospy.client][INFO] 2020-07-18 14:01:53,190: init_node, name[/odom_node], pid[1889]` `[xmlrpc][INFO] 2020-07-18 14:01:53,195: XML-RPC server binding to 0.0.0.0:0` `[xmlrpc][INFO] 2020-07-18 14:01:53,197: Started XML-RPC server [http://tractor_aj:40479/]` `[rospy.init][INFO] 2020-07-18 14:01:53,197: ROS Slave URI: [http://tractor_aj:40479/]` `[rospy.impl.masterslave][INFO] 2020-07-18 14:01:53,199: _ready: http://tractor_aj:40479/` `[xmlrpc][INFO] 2020-07-18 14:01:53,200: xml rpc node: starting XML-RPC server` `[rospy.registration][INFO] 2020-07-18 14:01:53,203: Registering with master node http://tractor_aj:11311` `[rospy.init][INFO] 2020-07-18 14:01:53,300: registered with master` `[rospy.rosout][INFO] 2020-07-18 14:01:53,301: initializing /rosout core topic` `[rospy.rosout][INFO] 2020-07-18 14:01:53,312: connected to core topic /rosout` `[rospy.simtime][INFO] 2020-07-18 14:01:53,319: /use_sim_time is not set, will not subscribe to simulated time [/clock] topic` `[rospy.internal][INFO] 2020-07-18 14:01:53,381: topic[/fix] adding connection to [http://tractor_aj:37439/], count 0` `[rospy.internal][INFO] 2020-07-18 14:01:53,385: topic[/heading] adding connection to [http://tractor_aj:37439/], count 0` `[rosout][ERROR] 2020-07-18 14:01:53,475: bad callback: <bound method MainClass.gps_callback of <__main__.MainClass instance at 0x752f37d8>>` `Traceback (most recent call last):` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.py", line 750, in _invoke_callback` `cb(msg)` `File "/home/ubuntu/catkin_ws/src/beginner_tutorials/scripts/gps_odom.py", line 82, in gps_callback` `"odom"` `File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf/broadcaster.py", line 63, in sendTransform` `t.transform.rotation.x = rotation[0]` `IndexError: tuple index out of range` `[rospy.internal][INFO] 2020-07-18 14:01:53,529: topic[/rosout] adding connection to [/rosout], count 0` `[rospy.internal][INFO] 2020-07-18 14:05:13,276: topic[/odom] adding connection to [/odom_to_lla], count 0` `[rospy.internal][INFO] 2020-07-18 14:05:13,571: topic[/tf] adding connection to [/move_base_flex], count 0` `[rospy.internal][INFO] 2020-07-18 14:05:13,974: topic[/tf] adding connection to [/tractor_viz], count 1` `[rospy.internal][INFO] 2020-07-18 14:05:26,328: topic[/odom] adding connection to [/move_base_flex], count 1` `[rospy.internal][INFO] 2020-07-18 14:05:56,883: topic[/odom] adding connection to [/record_1595095556212027759], count 2` `[rospy.internal][INFO] 2020-07-18 14:05:58,106: topic[/rosout] adding connection to [/record_1595095556212027759], count 1` `[rospy.internal][INFO] 2020-07-18 14:05:58,396: topic[/tf] adding connection to [/record_1595095556212027759], count 2` `[rospy.internal][INFO] 2020-07-18 14:06:24,576: topic[/odom] adding connection to [/rostopic_3841_1595095584206], count 3` `[rospy.internal][INFO] 2020-07-18 14:08:51,272: topic[/odom] removing connection to /rostopic_3841_1595095584206` `[rospy.internal][INFO] 2020-07-18 14:11:10,871: topic[/odom] removing connection to /record_1595095556212027759` `[rospy.internal][INFO] 2020-07-18 14:11:11,265: topic[/tf] removing connection to /record_1595095556212027759` `[rospy.internal][INFO] 2020-07-18 14:11:11,444: topic[/rosout] removing connection to /record_1595095556212027759` `[rospy.internal][INFO] 2020-07-18 14:15:20,686: topic[/tf] removing connection to /tractor_viz` ? Google is not showing many hits on ?ROSHandshakeException? ? Ping time average is 8.1ms from Ubuntu laptop to RPi on tractor Re-running a few hours later after shutting down and bring everything back up triggered a different error which was also seen earlier re: "`IndexError: tuple index out of range`" in `gps_odom.py` rosgraph https://drive.google.com/file/d/1Q4bnNHBSb24hJZ7uz6tO37oz6aXep-0I/view?usp=sharing

2020-07-19 02:12
Do you just get the errors when gps_odom.py is running? Not sure what the ROSHandshakeException error is. The tuple index should give you a line number on what is causing the problem. Also, are you running the gps_odom.py on your tractor?

2020-07-21 22:17
Looks like the IndexError is coming from the transform from odom to base_link. If you haven't moved your robot your heading will be NAN.

2020-07-22 20:20
Made some changes to the gps_odom.py node. Now it will only produce the TF if you are in fixed mode. Also, I initialized the heading pointing east. That 'should' prevent the IndexError. https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23

2020-07-24 17:12
Notes from the lawn tractor meeting: 09:02:58 From Jeff Sampson : https://www.pjrc.com/teensy/schematic.html 09:14:43 From Jeff Sampson : https://www.pjrc.com/store/teensy32.html 09:14:58 From Jeff Sampson : https://www.pjrc.com/teensy/pinout.html 10:02:58 From Matt Droter : Old package ROS andriod sensors http://wiki.ros.org/android_sensors_driver 10:11:13 From Matt Droter : Gamepad API https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API

2020-07-25 19:26
Working on debugging. From nmea driver the sentences look like this: `process[nmea_serial_driver_node-1]: started with pid [8701]` `[INFO] [1595704835.589618]: nmea_string:` `[WARN] [1595704835.591792]: nmea_cleaned: ['\x00']` `[INFO] [1595704835.658592]: nmea_string: $GPGGA,192035.60,4020.7131878,N,08007.7364420,W,4,10,0.9,328.6708,M,-34.191,M,00,0004*64` `[INFO] [1595704835.666618]: nmea_string: $GNGSA,M,3,02,06,05,12,25,13,,,,,,,1.8,0.9,1.6*20` `[INFO] [1595704835.670369]: nmea_string: $GNGSA,M,3,44,45,38,60,,,,,,,,,1.8,0.9,1.6*2B` `[INFO] [1595704835.678024]: nmea_string: $GPRMC,192035.60,A,4020.7131878,N,08007.7364420,W,000.003,131.5,250720,0.0,W,D*37` `[INFO] [1595704835.859947]: nmea_string: $GPGGA,192035.80,4020.7131870,N,08007.7364414,W,4,10,0.9,328.6736,M,-34.191,M,00,0004*68` `[INFO] [1595704835.866033]: nmea_string: $GNGSA,M,3,02,06,05,12,25,13,,,,,,,1.8,0.9,1.6*20` `[INFO] [1595704835.871306]: nmea_string: $GNGSA,M,3,44,45,38,60,,,,,,,,,1.8,0.9,1.6*2B` But in gps_odom.py it appears my gps status is <> 2 `[INFO] [1595704706.460448]: data.status.status: -1` `[INFO] [1595704706.667153]: data.status.status: -1` `[INFO] [1595704706.865751]: data.status.status: -1` `[INFO] [1595704707.065390]: data.status.status: -1` `[INFO] [1595704707.260482]: data.status.status: -1` `[INFO] [1595704707.461949]: data.status.status: -1` Still researching..... :grin:

2020-07-25 19:41
On the $GPGGA sentence the "4" after the longitude indicates 4 = Real Time Kinematic, but when I rostopic echo /fix, that status is showing "-1" :thinking_face: header: seq: 104 stamp: secs: 1595705653 nsecs: 60554027 frame_id: "gps" status: status: -1 $GPGGA,193419.80,4020.7131905,N,08007.7364438,W,*4*,10,0.9,328.6651,M,-34.191,M,00,0004*6E

2020-07-25 20:07
Thanks for testing this out. There was a problem with the GPS Quality setting. Also, the parse error message has been fixed by Allen. You will need to re-download the package for the changes. https://github.com/ros-agriculture/nmea_navsat_driver

2020-07-25 20:09
Recording from the lawn tractor meeting: https://www.youtube.com/watch?v=7vAiCxBI-0I

2020-07-31 16:53
Notes from the lawn tractor meeting: 09:15:58 From Jeff Sampson : ublox f9p survey: https://www.google.com/search?q=f9p+survey-in&rlz=1C1CHBF_enUS887US887&oq=f9p+survey 09:17:57 From Jeff Sampson : https://www.ardusimple.com/question/survey-in-settings-for-static-base-station/ 09:19:10 From Jeff Sampson : https://www.ardusimple.com/question/example-configuration/ 09:26:50 From Al Jones : recent purchase: IMU https://www.adafruit.com/product/4502 09:27:28 From Al Jones : recent purchase: magnetometer https://www.adafruit.com/product/4366 09:38:10 From Doug Thorpe : IP Cam is the Android and iOS app 09:38:19 From Doug Thorpe : turns your phone into a webcam 09:38:21 From Matt Droter : ROS-Mobile http://wiki.ros.org/ROS-Mobile 09:42:17 From Al Jones : https://www.adafruit.com/product/4413 09:49:53 From Matt Droter : AI Camera - https://www.kickstarter.com/projects/opencv/opencv-ai-kit

2020-07-31 16:58
@ , the link for your video app did not come through. Can you post it here?

2020-07-31 21:06
The IP Webcam app is by Pavel Khlebovich at https://play.google.com/store/apps/details?id=com.pas.webcam&hl=en_US and I think he may also have a similar app for the iPhone. Basically it creates a server at port 8080 and serves your video through that. What I do is start that app, and then in my other Andruino app I run another server at power 8765 and in the webpage it serves up, I incorporate the video feed through an iframe element.

2020-08-01 19:33
Recording from the lawn tractor meeting: https://youtu.be/QyhlTTSJ8wo

2020-08-02 14:58
Fumbling around with https://github.com/gareth-cross/rviz_satellite I seem to have my /fix data feeding into it and able to show my current location on the satellite image. Still exploring....

2020-08-02 19:39
*Testing Simulator:* There seems to be a bug is rvis_satellite (issue 85) that has the coordinates off so I fiddled around with making my own image file. I think I have it pretty close. Now to test it out.

2020-08-02 19:40
This is the Google satellite image.

2020-08-07 23:36
Recording from the lawn tractor meeting: https://youtu.be/4nN3OzLH7aA

2020-08-09 00:44
Current problem statement/symptom: Heading of vehicle in RVIS does not update when the vehicle moves. Latest bagfile https://drive.google.com/file/d/1XBSdEz5zy5vojfd-2w-nKWxhnLuXOtUD/view?usp=sharing The heading in the RMC NMEA sentence appears to be correct, changes and is published correctly. The radians equivalent appears to be correct. Review of the bagfile: ? Driving ahead starts at ~Duration: 31 / 181.61767 (heading 72-94 degrees) ? Driving circles start at ~Duration: 62.560467 / 181.61767 ? Return begins at ~Duration: 90.541289 / 181.6176 (heading 240-270) ? End ~Duration: 121 / 181.617 Next step: Validate quaternion input into odom is correct.

2020-08-09 12:47
msg.pose.pose.orientation data does not appear to be correct in the odom message. Using this code to output yaw from odom and re-playing the 30 seconds of the bagfile ($ rosbag play -l --start=60 --duration=30 2020-08-08-15-02-27.bag) when my tractor was doing a circle the yaw value is not moving as expected. Yaw stays about 0. `#!/usr/bin/env python` `# check_yaw_from_odom.py.py` `import rospy` `from nav_msgs.msg import Odometry` `from tf.transformations import euler_from_quaternion, quaternion_from_euler` `print("starting check_yaw_from_odom")` `def get_rotation (msg):` `global roll, pitch, yaw` `orientation_q = msg.pose.pose.orientation` `orientation_list = [orientation_q.x, orientation_q.y, orientation_q.z, orientation_q.w]` `(roll, pitch, yaw) = euler_from_quaternion (orientation_list)` `print(yaw)` `rospy.init_node('check_yaw_from_odom')` `sub = rospy.Subscriber ('/odom', Odometry, get_rotation)` `r = rospy.Rate(1)` `while not rospy.is_shutdown():` `r.sleep()` Continuing to see if I can figure out the issue.


2020-08-11 16:06
Can you look at the Track angle in degrees (True) field 6 in the RMC message. https://www.trimble.com/OEM_ReceiverHelp/V4.44/en/NMEA-0183messages_RMC.html This is the raw message before translating it into ROS coordinates. In the GPS message true north should be 0, positive rotating clockwise. https://en.wikipedia.org/wiki/Course_(navigation)#/media/File:MISB_ST_0601.8_-_Platform_Heading_Angle.png

2020-08-15 19:23
Recording from the lawn tractor meeting: https://youtu.be/nNi638_708g

2020-08-19 14:12
Fired up AWS RoboMaker Hello World. Interesting. I will bring it up on the call on Friday and smarter people than me can tell me what they see.

2020-08-19 15:38
Looks like you are running something in AWS...

2020-08-19 15:38
You don't like it?

2020-08-20 23:20
It is AWS RoboMaker. It is interesting. They have Kinetic, Melodic and ROS2 Dashing to choose from and Gazebo 7 and 9 all packaged together. I think for the right use in-the-cloud development can be great. If you need AWS IOT Greengrass for other things then RoboMaker makes even more sense.

2020-08-21 17:17
Notes from the lawn tractor meeting: 09:26:20 From Matt Droter : A desciption of an autonomous lawn mower and a couple of smaller robots: https://groups.google.com/g/hbrobotics/c/jTf-Q5dYnic 09:31:46 From Doug Thorpe : Some videos of an automated or RC controlled riding lawnmower in this gallery as well. https://photos.google.com/share/AF1QipOjkHkbD3-PiNg4UyxEtyOh44Lg32Xggar5Z2CXB2F4Ck0VnAzjtyrp52UeMCOWyQ?key=N3d0WXNZbV9PNnFfcDNKeVBtWTJCc0otdEtRN1lR 09:59:59 From Jeff Sampson : Automated bale stacker: https://www.youtube.com/watch?v=X0RSL9j8bmM 10:10:48 From Jeff Sampson : https://www.youtube.com/watch?v=BBqSPirAFFQ 10:13:08 From Jeff Sampson : https://www.youtube.com/watch?v=tYf8hzM9Mc8

2020-08-22 01:43
Recording from the lawn tractor meeting: https://youtu.be/rcs26oILxE4

2020-08-22 17:06
Possible planner without the use of move_base? https://github.com/prl-mushr/mushr_global_planner

2020-08-22 18:55
I tweaked driver.py (https://gist.github.com/jones2126/72c1df217f863bb59abe99db4a0bb301) to start with a heading of 100 degrees until speed > 0.1 m/s. For some unknown reason the tractor appears to be starting in RVIS pointing North. Basically 90 degrees off.

2020-08-22 18:57
Still not quite sure what to do with this either.

2020-08-22 19:31
Awesome! What is your yaw degree when you are pointing North?

2020-08-22 19:33
You may need to rotate your yaw so it matches the ROS standard. NED is yaw = 0 North. ENU is yaw = 0 East.

2020-08-22 19:34
Coordinate Frames for Mobile Platforms https://www.ros.org/reps/rep-0105.html

2020-08-22 19:34
Maybe a couple of options. One, provide a static transform base_link to base_footprint. Two, remove base_footprint from the URDF.

2020-08-22 19:52
Standard Units of Measure and Coordinate Conventions - https://www.ros.org/reps/rep-0103.html

2020-08-23 17:36
Using this https://gist.github.com/jones2126/f6060321024a827775bee3da0910ab38 to convert quaternion to yaw it appears as I am moving from ~1 degree turning left into ~359 degrees (coming from the GGA NMEA sentence) "yaw" in radians is going from +0.024 to -0.005, so I think the answer to your question is 0 (zero) in radians and using the formula degree = (yaw*180)/3.1416 I get 0 (zero) as well in degrees.

2020-08-23 19:38
Since driver.py is taking RMC NMEA heading and loading it in to the quaternion with "q = quaternion_from_euler(0, 0, data['true_course'])" did you rotate the course over ground heading of your GPS so when pointing east heading is "0"? There is no yaw_offset param in the launch file.


2020-08-24 00:45
That looks great! Yes, I did have to rotate it by 90 degrees to get it pointing in the right direction.

2020-08-24 00:46
I am not sure if all gps are the same but maybe a heading offset that can be set in the launch file would make it easier.

2020-08-28 17:33
Notes from the lawn tractor meeting: 09:04:15 From Matt Droter : Ag robotics research project https://github.com/Dhruv2012/Autonomous-Farm-Robot 09:25:18 From Jeff Sampson : inks to my small electric vehicle: 09:25:30 From Jeff Sampson : https://rosagriculture.slack.com/files/U8DRE77DL/FQMGJTP40/hemisphere_01.png 09:25:50 From Jeff Sampson : https://www.youtube.com/watch?v=4cTYFYm2_RA 10:10:54 From Al Jones : ros lawn tractor https://github.com/ros-agriculture/lawn_tractor

2020-08-28 21:16
Recording from the lawn tractor meeting: https://youtu.be/ZpJ30BO_AR4

2020-09-04 17:06
Notes from the Lawn Tractor meeting: 09:31:24 From Matt Droter : Kyler's steering control https://youtu.be/7GK9KPS7eFI 09:43:29 From Jeff Sampson : Current sensors: https://www.youtube.com/watch?v=cG8moaufmQs 09:51:09 From Allan : navsat_transform: frequency: 10 delay: 3.0 magnetic_declination_radians: 0.00 #0.168285 # For lat/long 43.500718, -80.546638 on Jun 1 2017 yaw_offset: 1.570796327 # IMU reads 0 facing magnetic north, not east https://www.udemy.com/course/ros-navigation/ 09:52:17 From Allan : navsat.yaml file

2020-09-05 17:45
Recording from the lawn tractor meeting: https://youtu.be/2mj1IVl_hvM

2020-09-07 16:10
When we get heading from the GPS course over ground the heading is in NED format or North is zero degrees. ROS uses the ENU standard or East is zero. How do we convert Heading in NED standard to ROS ENU Standard? Working in degrees: ```Direction ENU NED ------------------------- North 90 0/360 West 180 270 South 270 180 East 0/360 90``` This is the formula for working with yaw only to get from NED to ENU: ```yaw_ENU = (90 - yaw_NED) % 360 # from Kyler``` This is the formula for rotating a quaternion: In the gps_odom.py example look at line 35. https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23#file-gps_odom-py-L35 If this is not documented/explained clearly is there a way we can make it better?

2020-09-07 16:33
Matt - in the gps_odom.py code what else gets altered if lines 37-38 are uncommented? I think lines 41-44 need to be replaced with `self.odom_quat = q_new` too but wanted to get your thoughts.

2020-09-07 16:45
You will get an error if you uncomment the lines. You will want to move that code block down to line 44 after self.odom_quat is defined. Then in line 46 change from: self.last_heading = self.odom_quat to: self.last_heading = q_new

2020-09-07 16:57
Uh...that doesn't look right, Matt. What's 45 degrees (NE) NED in ENU?

2020-09-07 16:58
What do we need to change?

2020-09-07 17:00
yaw_ENU = 90 - yaw_NED, right?

2020-09-07 17:00
yaw_ENU = (90 - yaw_NED) % 360

2020-09-07 17:03
45 degrees ENU should be 45 degrees NED.

2020-09-07 17:04
Oh! In your table you have West is 90 and East is 270 for NED. Should be flipped.

2020-09-07 17:18
I'll also give my usual warning that using GPS course over ground for heading is only reasonable if the antenna is located at the vehicle's point of rotation. And you're making coordinated turns.


2020-09-11 13:17
@ Sharing my personal, albeit very manual, start up process https://docs.google.com/document/d/1g-A5iY-po_oyZUfPVl6SHQZuMETmoFjGxcpgsEk4I6c/edit?usp=sharing. If you have a Tkinter approach to firing these processes that would be awesome. Happy to test or offer help.

2020-09-11 16:02
I can't find the link to the web meeting...

2020-09-11 16:03
Same as always... http://meet.ros-a.org/

2020-09-11 17:03
Notes from the lawn tractor meeting: 09:32:49 From Allan : https://github.com/mturktest123/rosGUI 09:45:39 From Matt Droter : Multi line comment for launch files from Al: <?ignore start ignore end ?> 09:51:11 From Matt Droter : Super old version http://wiki.ros.org/android_sensors_driver

2020-09-11 17:15
I got the 'windowclose' option to work and pushed it now. Also, this GUI will work with any command you want to use it for on the terminal; not just for working with ROS.

2020-09-12 20:09
Recording from the lawn tractor meeting: https://youtu.be/A6NSEeLhR4E

2020-09-13 13:26
@?s key command automation tool is pretty slick. With just a little coaxing I have it logging in to my RPi. Definitely will make life easier. My notes on using it are https://docs.google.com/document/d/1LHNxwTTjl5c9HoAWlErx2FPelkhe0kNSwJt9uRAmAPY/edit?usp=sharing. Another opportunity to work and share on a tool that helps.

2020-09-13 18:51
Thanks @ - I have an update that will make the boxes align better and make the code more officially pythonic - will let you know once I push it to github. Still thinking about the best way to make updates to the code and avoiding you having to rekey all the titles; etc each time I make a code update.

2020-09-15 11:15
@ Nice. I started to tweak a version also. Posted https://gist.github.com/jones2126/151f91359931d1334fc606f9df185299. I want to figure out how to subscribe to a sensor and display on the Tkinter gui. You will also see I add tab's to a window and move the windows around a bit. I like what you did on the alignments. Very nice.

2020-09-15 11:16
@ - I did push the updated code for the new layout of the GUI yesterday if you want to pull it.

2020-09-15 11:27
If we add a frame and put a few boxes in it we can display a few key data points. I just clipped this box from another example.

2020-09-25 15:57
Hi all. My name is Prabhakar "KP" Karri and I live in Minnesota. I'm interested in building an autonomous lawn mower and recently joined the Twin Cities Robotics Group and am here on Jeff Sampson's recommendation. I look forward to attending future meetings and introducing myself. Have a great day!

2020-09-25 16:00
Our video meeting is starting right now, if you are interested. http://meet.ros-a.org/

2020-09-25 17:19
Notes from the lawn tractor meeting: 09:40:20 From Matt Droter : 6Axis Agriculture Drone 1400mm Agricultural UAV Drone Frame Capacity 10KG 10L Tank for Farm Use https://www.aliexpress.com/item/4000098867962.html 09:50:03 From Al : https://rosagriculture.slack.com/files/URBPX59LP/FU9HYCGF5/test_2.mp4 09:50:37 From Jonathan Hughes : https://www.gadgetify.com/wp-content/uploads/2017/07/17/Digital-Farmhand.jpg 09:52:07 From Jonathan Hughes : https://www.aliexpress.com/item/33015675856.html?spm=a2g0o.productlist.0.0.37277193SbEusa&algo_pvid=0af1b543-0cce-4b22-aec9-c3640cd1423a&algo_expid=0af1b543-0cce-4b22-aec9-c3640cd1423a-19&btsid=0b0a050b16010526763507396ee4ca&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ 09:52:20 From Al : USDA reference re: innovation https://www.usda.gov/media/press-releases/2020/02/20/secretary-perdue-announces-new-innovation-initiative-usda 09:57:41 From Jonathan Hughes : https://www.digitalfarmhand.org/ 10:04:47 From Jonathan Hughes : https://www.ebay.co.uk/itm/RTY050LVNAX-Sensor-Hall-effect-rotary-position-sensor-Range50-25-HONEYWELL/202697879196?hash=item2f31bc2e9c:g:2n4AAOSwU6Rc9gYQ 10:06:09 From Jonathan Hughes : https://sensing.honeywell.com/RTY050LVNAX-non-contact-hall-effect-rotary-position-sensors 10:08:52 From Jeff Sampson : https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=p2047675.m570.l1313&_nkw=hall+potentiometer&_sacat=0 10:11:11 From Jeff Sampson : https://www.ebay.co.uk/itm/Angle-Sensor-Hall-Effect-Potentiometer-Analog-Transducer-Rotation-Displacement/284002925523?_trkparms=ispr%3D1&hash=item421fe4bbd3:g:Ij8AAOSwIqtfVZWp&enc=AQAFAAACcBaobrjLl8XobRIiIML1V4Imu%2Fn%2BzU5L90Z278x5ickk7PdDazAlGltMLJlUhrWsDwOutNbw6yr8P4qkm%2FYdr6RPrxmPJFogROUmoFDum6jK24tP088MzSO4kI8oqsc%2BjwdTJBgNOuYeniEv817Jt091s1O2Vdskn%2BmqiniZs5ul%2BUCZYnCU0kmJnosSlyIzM%2BRyg6xB0jd19QaGLNNWVAxp3G1ZGaSYC88Te3lIGQ6Enu2M3LkxgCav4HIaCW0HfXp6Ap8SXZKzlk8P4gxHz0Tb3obzOvFF%2BIQoHzpUzI%2BXKBxMbBpgIMrF%2FF69x%2F3ngb%2FfFhDPsNlqBiJz0yPIOeXaO%2FO3mlsvJyEGKO24I5%2FJDQRl6zVIHkCUNI9u7QgYyi%2B1IYzv3%2FlqR3e1idSlA%2B7fvyCD9hezDmOyhdBzy2I3PryvVplk4oc7OqFW%2BhEWaD%2Fwi1OAtmdgIFz4eGW2gmt%2B1V3BfQJ3xRfkT4ks%2F3IsS5O06wSwvJvlZwRBXP7JMTAX5FB81%2BhDKNgHx61qXWshUEO4cNL5jXtgmGG%2BMwWccWXbFcNCS1j7CeX44X%2F6YMEoJQXDlQvsv2GSMZ9ez2Nr9OVQ%2FmjOmW4xI2VfgqCgARD9tYoqlXIUW1m5JxtjKlVjLRpsxww57KK78cP5mOniJlxBOD8t18dxkQvVbPd2JwpoG6Am8%2BGJKqe4rW0ywlJXpXbOBlu7KCw4JimQRoGYBt%2BVqMGkKiSUin5zftf2Z1h%2BntEv373Ws1O3WWdl8MwAgagXHzL 10:18:06 From Al : https://autoplicity.com/3933019-delphi-er10032-self-leveling-unit-sensor 10:18:17 From Jeff Sampson : https://www.google.com/search?q=delphi+ride+height+sensor&rlz=1C1CHBF_enUS887US887&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiFvfD354TsAhVFK80KHbr0DF0Q_AUoAnoECAwQBA&biw=1327&bih=512

2020-09-26 15:18
Recording from the lawn tractor meeting: https://youtu.be/ztkFEgJ6xhg

2020-09-28 15:56
Hi Jeff! Don't know how I missed this one :disappointed: I was tooling around on the ROS website, so definitely available. What's your schedule? Fridays at 11:00am Central Time? I'll put it on my calendar and definitely join next time.

2020-09-28 16:22
The lawn tractor meetings are Fridays at 11:00am Central Time. The general meetings are Tuesdays at 8:00pm Central Time. The general meetings have an announcement in the <#C67AH8SP6|general> channel one hour before the meeting. You just have to remeber the lawn tractor meetings and you use the same link for either meeting.

2020-09-28 16:50
Awesome, thank you!

2020-09-28 16:51
BTW, I have some Slack confusion. It looks like I've signed up using two accounts - my yahoo email and the gmail (zeebanker).

2020-10-02 15:37
*@channel* [Meeting Reminder] ROS Agriculture Lawn Tractor meeting starts in 20 minutes. Web meeting link: http://meet.ros-a.org Meeting ID is: 143104309

2020-10-02 17:10
Notes from the lawn tractor meeting: 09:10:47 From Al : https://gist.github.com/jones2126/ 09:19:15 From Jonathan Hughes : https://www.ebay.co.uk/itm/P3022-V1-CW360-Rotary-Hall-Angle-Sensor-0-360-Degree-Full-Circle-Magnetism/254688250684?hash=item3b4c9a4b3c:g:G48AAOSwjT5fN2vp 09:25:17 From Doug Thorpe : https://lentinjoseph.com/ 09:29:00 From Matt Droter : Mastering Robot Operating System ? Live Course by Lentin Joseph. https://discourse.ros.org/t/mastering-robot-operating-system-live-course-by-lentin-joseph/16513 09:37:45 From Al : https://github.com/ros-agriculture/nmea_navsat_driver/blob/master/src/libnmea_navsat_driver/parser.py 09:41:36 From Lee Hughes : Thanks for the link :-). 09:48:14 From Doug Thorpe : November 12th https://roscon.ros.org/world/2020/ 09:50:51 From Matt Droter : Why ROS 2? https://design.ros2.org/articles/why_ros2.html 09:53:03 From Prabhakar Karri : Thanks for the link Matt 09:54:56 From Matt Droter : ros driver for em7180_imu https://github.com/droter/em7180_imu 09:57:23 From Matt Droter : ROS2 package containing drivers for NMEA devices that can output satellite navigation data (e.g. GPS or GLONASS). https://github.com/ros-drivers/nmea_navsat_driver/tree/ros2

2020-10-02 17:11
It was great meeting everyone! Looking forward to future meetings.

2020-10-02 17:13
@ Al, I?m on Central time and am available today from 2pm - 4pm. Please let me know when you might have a few minutes. If not today, anytime next week is also fine. I appreciate your offer to help me think through my setup.

2020-10-02 19:30
Recording from the lawn tractor meeting: https://youtu.be/m-k1YZC7Aos

2020-10-09 17:03

2020-10-09 18:13
Speaking of towing lawnmowers: https://www.youtube.com/watch?v=PA88-o4Iatk This would solve my problem. I took the deck off my lawn tractor. I can't transport it with the deck installed. And it is a pain to remove and reinstall. I could pull my push mower behind my lawn tractor.

2020-10-09 22:12
Recording from the lawn tractor meeting: https://youtu.be/oodVj8qTNpk

2020-10-11 17:26
How goes the robot building?

2020-10-16 17:35

2020-10-16 23:22
Great talk on renewable energy. +1 for nuclear :-)

2020-10-17 13:27
Recording from the lawn tractor meeting: https://youtu.be/iOU6waYPTQQ

2020-10-17 18:34
2 D Nav Goal Attempt in RVIS with Lawntractor - well at least I'm in the yard trying; No movement when attempting to execute 2d nav goal. Error attached. Joystick driving works fine.

2020-10-17 18:36
Odom seems to be publishing fine

2020-10-17 18:46
Have you been able to test this with the simulator?

2020-10-17 18:47
Everything looks okay from the robot side.

2020-10-17 18:57
I think you should track down the TF error for base_footprint. Possibly just remove it from the transform tree. Or connect it correctly.

2020-10-17 19:01
@ Thanks. So many things to do. Step 1 is to go back and double check that it is working in the simulator. I'm 90+% confident it was last time I tried it there, but just want to make sure.

2020-10-17 19:06
Are you trying to use the URDF from the simulator for the physical tractor? I notice everytime you pull up a transform map that you have extra stuff specified that doesn't actually exist. That would explain why it is specifying a laser link and a camera link. You may have added camera to your physical tractor. But I assume you don't have a laser on the tractor.

2020-10-17 19:12
@ Let's see, my GUI fires this launch statement for Rvis

2020-10-17 19:18
@ The launch file I start is https://gist.github.com/jones2126/e6334ce6d4fa1dbc79e83940216bc6b6 it is started from my gui. The URDF is the one from Matt. I don't think I've changed it. I will check.

2020-10-17 19:22
So go to your lawn_tractor_sim package and look in the lawn_tractor_sim_real_world.launch file and see which URDF file you are specifying. I assume you only have a single URDF file you are trying to use for everything. But you need a URDF file for your simulated vehicle. And a different URDF file for your actual vehicle. In the past when someone says "Show us your TF tree" someone will say that is not correct, it looks like you are using the simulator URDF file. You have always ignored that observation and moved on. Everybody always assumes when it comes back to bite you that you will make the connection. To quote the old commercial "That some day is today, at Honeywell..."


2020-10-17 19:26
Both "simulated" and "real world" launch files use the same urdf which is the same I brought over from the original simulator

2020-10-17 19:26
Problem?

2020-10-17 19:28
We are using the same tractor; I mean minus some minor variations on where the GPS is located, I realize it needs tweaking.....but big problem or medium problem?

2020-10-17 19:36
If you use a URDF file, it has to match the vehicle you are running. I personally don't run a URDF file for a physical vehicle. (laziness, old dogs - new tricks...) I use static transform broadcasters. (laziness, the way Iearned it) But the similator URDF is psecifing things that your phyical tractor does not have. (laser scanner, sonar, inertia...) (and apparently a difference between if you have base_footprint or not) So no, you don't want the same URDF file for two vehicles that are different. Maybe Matt can post his URDF file for his physical lawn tractor to be used as a reference (assuming he is using a URDF for his physical lawn tractor).

2020-10-17 19:55
@ Bummer, not working in simulator...same error....

2020-10-18 13:19
Something is wrong with your launch file. The simulator uses a different map. It should look like this.

2020-10-18 13:20
Test with what works first then make changes. Sometimes we call that "Known good." The master branch will build and run.

2020-10-18 20:37
running catkin build after bringing down updated lawn tractor triggered an error on the lino-pid

2020-10-18 21:54
Good catch. That package isn't needed with the lawn tractor. Please delete the package path_planner from your workspace.

2020-10-18 21:54

2020-10-18 21:56
It may be easier to start out with a clean workspace to begin with.

2020-10-19 05:36
to me the failure in producing path looks like an error with costmap setup - there is no free space in the costmap around the tractor, probably causing the planner to fail. To check this you could plot both the global and local paths and see what they look like

2020-10-20 01:49
In case you were wondering the Teensy pins are not 12 volt tolerant.

2020-10-20 19:50
I love the Ardumower! The project has brought me deeper into robotics. And has influenced me a lot the last years :wink:

2020-10-21 13:23
@ Here is a presentation that Sohin put together on the lawn tractor safety.

2020-10-21 14:19
:thumbsup:

2020-10-23 16:58
Notes from the lawn tractor meeting: 09:36:36 From Prabhakar Karri : I misspoke. KG/cm = roughly 5 lbs/in 09:51:45 From Matt Droter : Magic Gel - https://www.youtube.com/watch?v=RGAKQEn--bQ 09:53:17 From Doug Thorpe : YouTube Video of removing mower deck: 09:54:40 From Doug Thorpe : https://youtu.be/JrF-i-FNv5c

2020-10-23 17:08
This video is more informative about the "Magic Gel" type product. https://www.youtube.com/watch?v=T2iV_lAQcG0 Although I would do an experiment before potting a microcontroller board that has a crystal. The crystal circuit may be high enough impedance that it may be affected by this gel.


2020-10-23 19:24
Recording from the lawn tractor meeting: https://youtu.be/B1uOIt-XFl0

2020-10-24 14:58
@ How does the 3d printed servo gear attach to the shaft that turns?

2020-10-24 14:58
What prevents it from slipping around?

2020-10-24 15:02
The drive gear has a screw hole in it that goes through the 20mm OD drive shaft

2020-10-24 15:03
Isn't cool to have a 3D model that can be moved around!

2020-10-24 15:05
Yes :slightly_smiling_face: I was wondering if that could be a steer motor also. Maybe on a smaller robot.

2020-10-24 15:05
It could be a transmission/drive motor on the back for a smaller robot.

2020-10-24 15:07
Conceptually I would assume so. Jeff's question about durability is still a key question. I also wonder about hold strength.

2020-10-25 17:41
OK, so ROS_ag simulator reloaded and 2D nav goal working on laptop

2020-10-25 17:48
So close now....

2020-10-25 19:49
real world....a little bit wobbly....

2020-10-25 20:00
I have never figured out how to tune the TEB planner. It looks like your gps to odom tf isn't publishing? You will want to make sure your robot knows where your gps is in relation to your base_link.

2020-10-25 20:01
The ROS wiki points to this tuning guide http://kaiyuzheng.me/documents/navguide.pdf

2020-10-25 20:01
The simulator URDF includes the laser and camera which you might not have on your real robot.

2020-10-25 20:03
Take a look at your TF Tree if it is broken you can connect two frame by adding this to your launch file: <node pkg="tf" type="static_transform_publisher" name="gps_to_base_link" args="0.0 0.0 0.0 0 0 0.0 /gps /base_link 100"/>

2020-10-25 20:04
A more correct way would be to build a URDF of your real robot :slightly_smiling_face:

2020-10-25 20:06
```http://wiki.ros.org/tf#static_transform_publisher These are the measurements for your sensors (x y z yaw pitch roll) Where x forward y left z up http://www.ros.org/reps/rep-0103.html``` You will want to replace the args= with real values.

2020-10-25 20:14
and its raining...argh...

2020-10-30 17:09
Notes from the lawn tractor meeting: 09:39:54 From Al : https://www.ruralking.com/track-wb-b-s-6-5hp-1100lb-hyd 09:42:57 From Matt Droter : https://linorobot.org/ 09:47:59 From Jeff Sampson : Allen's 4 wheel robot presentation: https://www.youtube.com/watch?v=E5Wvto2rMmk 09:49:36 From Matt Droter : ROS software for the raspberry pi - https://downloads.ubiquityrobotics.com/pi.html

2020-10-31 14:37
Recording from the lawn tractor meeting: https://youtu.be/JjeOytM0eGY

2020-11-04 15:54

2020-11-06 17:17
No meeting today (11/6)? Update: Apparently pushed back an hour because of daylight savings time.

2020-11-06 17:40
Hi Doug the meeting link is http://meet.ros-a.org

2020-11-06 18:42
Notes from the lawn tractor meeting: 09:18:38 From Matt Droter : robot navigation https://www.theconstructsim.com/robot-navigation-learning-path/ 09:19:49 From Matt Droter : TEB planner tutorials http://wiki.ros.org/teb_local_planner/Tutorials 09:20:07 From Matt Droter : https://github.com/rst-tu-dortmund/teb_local_planner_tutorials 09:24:14 From Vinny Ruia : https://github.com/ros-agriculture/lawn_tractor/tree/develop 09:39:12 From Matt Droter : Transforms needed: map -> odom -> base_link 09:39:29 From Lee Hughes : https://www.etsy.com/uk/listing/883884702/ardu-simplertk2b-heading-gps-receiver?ref=shop_home_active_1&frs=1 09:41:33 From Vinny Ruia : USB CAM: http://wiki.ros.org/usb_cam

2020-11-06 21:06
Recording from the lawn tractor meeting: https://youtu.be/lq0xQs77Mmc

2020-11-08 21:52
great work Al..

2020-11-08 21:58
Greetings to all members. I am facing a crossroads and that is why I come to ask for help and guidance for problems and doubts about how to face them in a way that leads me to learn more about the situation and is also useful for the community. I have been pushing this instance for a few months and unfortunately as a result of the pandemic I find it very difficult to attend the group's meetings in its two weekly instances, because I think that this is the most correct channel; So not seeing any other alternative seems to me that this is the best channel where I can raise my situation. Since last year, thanks to the support of the community in general and Matt in particular, I managed to have a fairly functional version of the tractor. During most of the time between November of last year and March of this year I spent it trying to solve the RTK information of the GPS and that I believe that through the NMEA I had solved it; But during one of the tests and as a result of the bumps on the ground, I had a short circuit generated because two loose cables made contact. Fortunately, the assembly that Matt guided me in had a fuse that I think solved the problem that this was more serious. The point is that I keep the robot lying in the field for more than two months until I can figure out how to bring it. The first time I turned it on, the steering ran all the way to one side and every time I turned it on the same thing happened; but no longer returning to the center. All this frustrated me a lot and I stopped the project for a while. The clouds passed and I resumed work, I assumed that the firmware of the teesy 32 could have been corrupted, so I reloaded it from the RPI and the address stopped turning but I lost control of this .. On the one hand it was good, because of the In the same way that I realized that all my documentation on the ubiquit image configuration was faulty, I realized that my documentation on the teensy was also precarious. So today I am trying to recheck the teensy (may have burned out), the servos and motors individually on the tractor. The question is that I am facing a bug-checking scenario and I am considering putting together a bug-checking script. Questions: ? Is there a script that does this ..? ? Are there separate scripts that could be used for this ..? ? Can you think of any other tools I should use in this scenario ..? ? Do you think there is something I should do differently ...? I really appreciate all comments, thank you very much ..

2020-11-08 22:25
It is great startup documentation!

2020-11-08 22:25
Anything can be automated with enough time and money :)

2020-11-08 22:28
Have you used Pytest?

2020-11-08 22:28
Python quality control.

2020-11-08 22:46
Great questions. As the robot system gets bigger troubleshooting can become a little confusing. There are some built in tools for this. There is a package called diagnostics http://wiki.ros.org/diagnostics Diagnostic System for Robots Running ROS https://www.ros.org/reps/rep-0107.html Once your robot is reporting diagnostics you can use Robot Monitor in RQT to look at what the system is doing. http://wiki.ros.org/rqt_robot_monitor Is there one area or system that is causing the most problems?

2020-11-09 03:28
Thanks for answeting. I Will test your ideas. I think that teensy Is not working properly.

2020-11-09 03:30
No I Will look it. Thanks

2020-11-09 13:16
@ what is Groot..? Thanks

2020-11-09 13:22
@ What I have is a documented startup process https://docs.google.com/document/d/1VeUyqqp20ist_rncfbH1SzEFIpJrhCIdg0ihG69Kykc/edit?usp=sharing. You will see part of that is starting a script that displays the angle sensor at Step 1 which is a way for me to know at the first step that communications are working, the RPi is working, the angle sensor is working and ROS is working. If any of those things are not working at Step 1 then I can start debugging at that point.

2020-11-09 13:26
Thanks Al, I'm already using it, that's why I thanked you and I commented on the post. I find these ignition processes very useful, because many of the mistakes I made were the result of not following the steps to the letter

2020-11-09 13:29
and maybe it would not hurt to add there, see and check fuel and oil..

2020-11-09 13:29
Tell me more about where you are having a problem? I'm simply not understanding. Previously if I thought I had killed a Teensy I would simply load a Blink program to make sure it was still working. After that I would would load a simple sweep program to sweep the steering back and forth.

2020-11-09 13:29
Groot is the tool you can use to visualize the behavior tree (it is not a needed component for the robot to drive)


2020-11-09 13:31
Yes, just looking at your documentation I'm going to do that; But then I wanted to have a way to go to check the rest of the sensors and that's where the question came from.

2020-11-09 13:31
Thanks

2020-11-09 13:37
This is an example simple program to loop my transmission servo for testing.

2020-11-09 13:41
You mentioned, "...the steering ran all the way to one side and every time I turned it on...", for me when that happened I would first check to see if ROS is running and if you can echo what the cmd_vel topic is being published. If the topic is being published with a valid value then something is generating a hard left or a hard right value.

2020-11-10 21:05
Has anyone had a problem using the teensy microcontroller? I have broken two so far. I tore the usb connector off of one and also sent 12 volts to the pins of another. Other than that I haven't had a problem with them not running.

2020-11-13 17:55
Notes from the lawn tractor meeting: 09:11:14 From Matt Droter : URDF ROSCon - https://www.youtube.com/watch?v=g9WHxOpAUns 09:27:42 From Jonathan Hughes : https://landworkersalliance.org.uk/

2020-11-13 22:11
Recording from the lawn tractor meeting: https://youtu.be/1Bwu-g-vL6g

2020-11-14 21:48
Testing today TF status....

2020-11-14 21:49
RVIS status...

2020-11-14 22:16
Are you able to run an autonomous mission with a 2d nav goal?

2020-11-14 22:25
So if you would like to use the URDF from the simulator with your real robot there is a small change. Your base_footprint is the root link in the URDF. You can change this line: https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23#file-gps_odom-py-L63 Use base_footprint instead of base_link Also update this line: https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23#file-gps_odom-py-L77 to use base_footprint instead of base_link

2020-11-14 22:28
Your TF tree will be map -> odom -> base_footprint -> base_link

2020-11-14 22:28
for now we are in a 2d flat world

2020-11-14 23:01
Things are going to get much more complex. We may need to think of a different approach.

2020-11-14 23:10
@ @ Hi... I'm trying to put together a spreadsheet to be able to buy well what we each have in our robots. I'm doing them where Al did with the to-do list. https://docs.google.com/spreadsheets/d/1JES0CGYjiFmQXKdtgvr0XBUH5w0qMadhWtDpELFurbQ/edit?usp=sharing I am missing a lot of things, it is not finished and it would be great if you add whatever you like. I think it is a good tool and it will help us to compare ourselves and much more.

2020-11-14 23:12
I'm mostly copying it from Al ... :grinning:

2020-11-14 23:59
Thanks for making this list. Cool you added the line about security. That was a topic that was brought up at ROSWorld.

2020-11-15 13:03
@ I updated my column. Let me know if you have questions. Instead of "base station" you might call it "operator laptop". I first thought of the base station that is sending RTK correction data.

2020-11-15 13:03
Simulator, yes; Real world, no.

2020-11-15 13:08
Good point and thanks.. Anyway, it is not finished, we need to add a lot of things .. For example, I think it is important to put a link to our urft files, also to our roslaunch files .. With this I want to tell you that at least it will be a process of a month where we are going to realize things and add more info. I really appreciate your work.

2020-11-15 17:54
That is huge! Cool glad you can get the simulator working. We will use the simulator to test our system. The simulator works well because we can all run the same software stack for testing even though our robots maybe different. Known: 1. Simulator works with nav stack Does your real robot with a joystick?

2020-11-15 17:56
At a very basic level. The simulator listens to a cmd_vel (Twist) message and the robot moves. Second the simulator publishes an odom (Odometry) message and TF.

2020-11-15 17:57
Your real robot listens to a cmd_vel (Twist) message and publishes an odom (Odometry) message and TF.

2020-11-15 17:57
They both have the exact same interface.

2020-11-15 17:59
If your real robot uses: Wheel encoder and IMU it publishes -> Odometry Laser and IMU it publishes -> Odometry Camer VIO it publishes -> Odometry So on your real robot you can use whatever localization method you want. They will all be combined (example: robot_localization) to output the same message type Odometry and TF.

2020-11-15 18:01
Troubleshooting case: The nav stack works with the simulator. The nav stack does not work with my real robot. What could cause this problem?

2020-11-15 20:54
How would we look into this problem more? Troubleshooting case: The nav stack works with the simulator. (Nav Stack outputs cmd_vel and simulator moves.) The nav stack does not work with my real robot. (Nav Stack outputs cmd_vel and real robot doesn't move) What could cause this problem?

2020-11-16 06:35
As a first step, well, i just deactivate the Nav Stack and try to control the robot manually (it may be basic, but this often helps :D). Then I would check if there are two or more concurrent nodes that are publishing cmd_vel at the same time.

2020-11-16 15:34
as @ says, are you able to manually publish /cmd_vel and have the robot react "appropriatly"?

2020-11-16 15:45
to me this seems like a networking issue. Maake sure the talker / listener example works in both configurations (machine to operator laptop)

2020-11-17 03:57
@ I added links to my software. It appears we are using different navigation stacks. cc: @

2020-11-18 01:36
It looks like the global planner is making it difficult for TEB to follow the plan.

2020-11-18 01:45
Would the lattice planner be better?

2020-11-18 01:59
which tractor is that?

2020-11-18 02:17
Just got it out of the shop.

2020-11-20 18:04
Sorry i dropped out of the meeting by mistake. I was just saying that the design requrements of a hydraulic system are less demanding with an electric motor than an internal combustion engine as electric motors generally have both a wider speed range of useful torque, and are more easily electronically controlled than internal combustion engines

2020-11-20 18:23
Notes from the lawn tractor meeting: 09:29:05 From Matt Droter : URDF Tutorial http://wiki.ros.org/urdf/Tutorials 09:32:24 From Juan Riva : Matt if you are asking about what is better.. Maybe only one launch file 09:41:48 From Matt Droter : ROS launch XML format http://wiki.ros.org/roslaunch/XML 10:11:47 From Jeff Sampson : https://vimeo.com/showcase/rosworld2020lightningtalks 10:13:05 From Jeff Sampson : https://vimeo.com/showcase/rosworld2020

2020-11-21 00:08
If you are interested in testing the new lawn tractor simulator the docker image is published to dockerhub now.

2020-11-21 00:09
You can use this file to start the simulator on your computer: https://github.com/ros-agriculture/lawn_tractor/blob/develop/docker/start.sh Once the image downloads and you get a command prompt. You can run the simulator with: roslaunch lawn_tractor_sim lawn_tractor_sim.launch

2020-11-21 00:14
This is an example of sending move_base_flex a pre-planned or recorded path. This node will read the generated points file and publish a path to the topic /drive_path https://gist.github.com/droter/cc63dd40b866bcfe3874bb35fa6c46f9 This node will read the Path that is published to /drive_path and send it to move_base_flex. https://gist.github.com/droter/eef584eccb0a7328f5b957c744fecf9b

2020-11-21 00:15
*Results in the real world may vary.

2020-11-21 01:10
Recording from the lawn tractor meeting: https://youtu.be/Ct7i916sQGg

2020-11-21 01:16
we should probably add this to the repo itself, yes?

2020-11-21 14:18
Testing today....Getting closer....

2020-11-21 14:20
No errors on the robot description... now to link base_link to base_footprint....

2020-11-21 14:22
base_footprint and base_link are connected.

2020-11-21 14:22
On your TF tree. If the lines are connect to the frames then they are connected.

2020-11-21 14:23
I thought I wanted odom->base_footprint->base_link->gps?

2020-11-21 14:24
This will make much more sense if you take an hour and go through the TF tutorials.

2020-11-21 14:25
It is helpful to redo tutorials that you have already done. It seems like there is more information in them but only after you have worked on the system for a while.

2020-11-21 14:28
So something is publishing odom to base_link and odom to base_footprint. This is incorrect.

2020-11-21 14:28
Your odom_node is publishing two TF's

2020-11-21 14:29
It will only publish one.

2020-11-21 14:33
This is the current state of gps_odom.py https://gist.github.com/jones2126/0f98af1cad3ca73df3b0e759cc30dc3f I'm just guessing then, but should I be commenting out lines 66 and 85?

2020-11-21 14:34
You need to delete one of these: odom_broadcaster.sendTransform((_xg, _yg, 0.0), self.odom_quat, rospy.Time.now(), "base_link", "odom") odom_broadcaster.sendTransform( (_xg, _yg, 0.0), self.odom_quat, rospy.Time.now(), # "base_link", "base_footprint", "odom" )

2020-11-21 14:35
you are publishing two TF from this node.

2020-11-21 14:53
That looks better


2020-11-21 14:54
Disco!

2020-11-21 15:01
So, using joystick and echoing cmd_vel values appear normal, issuing 2d nav goal in RVIS does not generate any cmd_vel values.

2020-11-21 15:03
btw, the tractor is not running so I'm not expecting it to physically move

2020-11-21 15:31
al@al-ThinkPad-W530:~$ rosparam get /move_base_flex/local_costmap/global_frame map


2020-11-21 15:33
Looks like you are sending your goals in the odom frame

2020-11-21 15:33
It needs to be in the map frame

2020-11-21 15:35
Do you get the same error when you are just running the simulator?

2020-11-21 15:36
I don't believe so, but will shut down and try in the simulator.

2020-11-21 15:46
2 steps forward, one step back. Now the simulator is broken. But that is a clue...

2020-11-21 15:47
urdf?

2020-11-21 15:50
just for record keeping, this is the TF from the simulator

2020-11-21 15:51
Are you running the software from the docker image?

2020-11-21 15:57
In RVIZ can you change your Fixed_Frame to map and try sending a goal again?

2020-11-21 16:00
works. thank you.

2020-11-21 16:02
Re: local vs docker, I am using a local installation of Ubuntu 16.04/Kinetic.

2020-11-21 16:22
You can't tell from a still shot, but 2d nav goal is generating a stream of cmd_vel statements now in the "real world". Given the tractor is not running it is just sitting there. Now I just need to wait for it to stop raining. @ thank you for your help.

2020-11-21 16:24
Very cool!

2020-11-21 16:24
Are you using the cmd_mux node? If so you will want to send the move_base cmd_vel to the mux instead of directly to your robot

2020-11-21 16:28

2020-11-21 16:30
reference...

2020-11-21 16:30
So you will want to remap the output of move_base_flex from cmd_vel to move_base/cmd_vel

2020-11-21 16:31
Human control is using teleop/cmd_vel and the autonomous sytem will use move_base/cmd_vel

2020-11-21 16:37
So this is what I currently have in drive_teleop.launch

2020-11-21 16:53
That is for your joystick node. How do you change the cmd_vel topic that move_base_flex is sending to move_base/cmd_vel

2020-11-23 15:07
If you have any ideas for the Hazards and Risks worksheet please add them to the list. https://docs.google.com/spreadsheets/d/1RvFk6FW-q0q8g9VHkWCMJwznVZEE5CR_VzM7WM_32kA/edit?usp=sharing Here is our current list:

2020-11-24 13:01
Hello everyone, I continue with the spreadsheet to compare the configurations. But while I was reviewing the security part in the documentation, So..... 1. How do you have the security RELAY configured? 2. Does anyone have a diagram or drawing of how the electrical wiring was after the intervention on the tractor ..? Greetings and thanks..

2020-11-26 23:22
This is the most I have for a wiring diagram. I have manual e-stop button and a radio e-stop. I now need to connect my USB relay into the magneto.

2020-11-27 00:05
Nice diagrama. Much better than mine

2020-11-27 01:17
Hello everyone, in 43 minutes we got together to work with the simulator. They are all invited and it is for newbies like me.


2020-11-27 03:24
Thanks @ for coming tonight

2020-11-27 03:25
You are welcome

2020-11-27 18:19
Notes from the lawn tractor meeting: 09:41:20 From Matt Droter : How to setup tractor TF https://youtu.be/7jOri9TkW0s 09:41:53 From Matt Droter : TF tutorials http://wiki.ros.org/tf/Tutorials#Learning_tf 09:42:13 From Matt Droter : ROS URDF http://wiki.ros.org/urdf/Tutorials 10:12:49 From Matt Droter : WireViz is a tool for easily documenting cables, wiring harnesses and connector pinouts. https://github.com/formatc1702/WireViz

2020-11-27 21:23
*Cancel move base goal - getting to code in Tractor_Teleop , but Cancel not engaging* You can see from the output message the information message is printed indicating the code appears to get to this section, but the tractor keeps moving until it reaches its goal in the simulator (i.e. this statement does not seem to have any effect "self.goal_cancel_pub.publish(cancel_msg)"). Conversely the deadman switch does cause the tractor to pause. cc: @

2020-11-27 21:33
Not definitive, but the Goal ID appears to be blank.

2020-11-27 21:48
I am not sure how /move_base/cancel works with move_base_flex and the behavior trees. @

2020-11-27 21:49
If the deadman isn't working are you using cmd_vel_mux? What topic is move_base_flex publishing to?

2020-11-27 22:07
Things that didn't work for me to cancel a 2D NAV goal: 1. This line "self.move_base.cancel_all_goals()" 2. Sending $ rostopic pub -1 /move_base/cancel actionlib_msgs/GoalID -- {} 3. Putting a "/" in the publisher statement, self.goal_cancel_pub = rospy.Publisher("/move_base/cancel", GoalID, queue_size=1)

2020-11-28 17:35
Recording from the lawn tractor meeting: https://youtu.be/qodq85NOl8A

2020-11-28 21:55
the default BT I have layed out does not respond to the cancel action

2020-11-28 21:56
I did not realize Al's system used this, therefore I didn't think we needed to implement it. @, were you expecting the robot to act on this?

2020-11-28 23:59
@ For safety reasons it would be useful to be able to cancel a mission, otherwise if you want to stop the tractor the only option I can think of is a hard shutdown using the e-stop.

2020-11-29 00:05
@ The deadman switch works normally in simulator and real world. Where did you pick up it was not working? Re: move_base_flex, I don't know, but can start the simulator if it's important to know. Why do you ask?

2020-11-29 00:16
@ which move_base_flex topic where you interested in? There are a number of them: /move_base_flex/GlobalPlanner/parameter_descriptions /move_base_flex/GlobalPlanner/parameter_updates /move_base_flex/GlobalPlanner/plan /move_base_flex/GlobalPlanner/potential /move_base_flex/TebLocalPlannerROS/global_plan /move_base_flex/TebLocalPlannerROS/local_plan /move_base_flex/TebLocalPlannerROS/obstacles /move_base_flex/TebLocalPlannerROS/parameter_descriptions /move_base_flex/TebLocalPlannerROS/parameter_updates /move_base_flex/TebLocalPlannerROS/teb_feedback /move_base_flex/TebLocalPlannerROS/teb_markers /move_base_flex/TebLocalPlannerROS/teb_poses /move_base_flex/TebLocalPlannerROS/via_points /move_base_flex/current_goal /move_base_flex/exe_path/cancel /move_base_flex/exe_path/feedback /move_base_flex/exe_path/goal /move_base_flex/exe_path/result /move_base_flex/exe_path/status /move_base_flex/get_path/cancel /move_base_flex/get_path/feedback /move_base_flex/get_path/goal /move_base_flex/get_path/result /move_base_flex/get_path/status /move_base_flex/global_costmap/costmap /move_base_flex/global_costmap/costmap_updates /move_base_flex/global_costmap/footprint /move_base_flex/global_costmap/parameter_descriptions /move_base_flex/global_costmap/parameter_updates /move_base_flex/global_costmap/static_layer/parameter_descriptions /move_base_flex/global_costmap/static_layer/parameter_updates /move_base_flex/local_costmap/costmap /move_base_flex/local_costmap/costmap_updates /move_base_flex/local_costmap/footprint /move_base_flex/local_costmap/obstacle_layer/parameter_descriptions /move_base_flex/local_costmap/obstacle_layer/parameter_updates /move_base_flex/local_costmap/parameter_descriptions /move_base_flex/local_costmap/parameter_updates /move_base_flex/move_base/cancel /move_base_flex/move_base/feedback /move_base_flex/move_base/goal /move_base_flex/move_base/result /move_base_flex/move_base/status /move_base_flex/parameter_descriptions /move_base_flex/parameter_updates /move_base_flex/recovery/cancel /move_base_flex/recovery/feedback /move_base_flex/recovery/goal /move_base_flex/recovery/result /move_base_flex/recovery/status

2020-11-29 00:26
@ Re: "are you using cmd_vel_mux?",

2020-11-29 03:40
I read your post wrong. Thought it wasn't working. That is looking like a robot graph. What is the /move_base/cmd_vel?

2020-12-01 01:28
@ I found out what the issue was and Matt and I are working to get you the ability to use `rostopic pub -1 /move_base_flex/exe_path/cancel actionlib_msgs/GoalID -- {}` to cancel the goal.

2020-12-02 01:40
@ I'm smiling to think that you think I'm capable of answering that giving it is inside of move base. I'm assuming it was put there by the move base gods.

2020-12-02 01:43
Haha well much smarter to look at nodes and topics from the RQT perspective. I usually spend half an hour on the command line trying to sort things out.

2020-12-02 01:47
Might be fun to try the area coverage planner with PID controller: http://wiki.ros.org/full_coverage_path_planner/Tutorials/CombineWithTrackingPID

2020-12-04 01:59
Hello everyone, in a little while we will start with the rookie and rookie simulator meeting .. https://us02web.zoom.us/j/88321856943?pwd=Z0xHUVQ2Y3AzQ0hRUXVVSWJGdEN1UT09

2020-12-04 03:24
Thanks @ for pasing by.

2020-12-04 04:18
Something to discuss at the meeting tomorrow. @ has mentioned Discourse. Maybe we should put a post there about the lawntractor. Something to consider.....Title: ROS Ag 18HP (~550cc) Ackerman steering, outdoor, rtk gps, movebase navigation platform (aka lawntractor test bed) ·       Post the milestone plan with the link to the software stack ·       Brief description of why we wanted to test on a common platform amongst a few different people ·       Post the meeting time

2020-12-04 14:27
Hi, I don't really understand what you mean; but I follow you. I am stuck with the scheme of work that I am taking. I think it would be good if we put together a personal and group plan for this year's work. There is much to work, learn and do; and if we do not organize ourselves better, the issues will overtake us. I did not put it on paper but this is what I have been thinking for my personal case and what I am going to focus on: 0. Community meetings. I want to achieve better assistance, be more productive and help more. 1. Simulator. Navigation, package and node creation. 2. Tractor. Small tests and documentation in English. I made the mistake of documenting my work only in Spanish and the technology speaking in English. 3. Collaterals. Better configure my work environment, achieve better tools, RTK, sensors and microcontrollers

2020-12-04 15:36
Hi, I have a question regarding the simulator that https://github.com/ros-agriculture/lawn_tractor/issues/28#issue-757189831; but I find it interesting to know what you think of the subject .. Is there any reason why the docker container does not have its own network interface ..? Because I thought it would be nice if it also had its own interface to be able to use external elements, for example applications that work on android .. Does anyone have an opinion on this ..? Thanks..

2020-12-04 18:01
Notes from the lawn tractor meeting: 09:03:53 From Matt Droter : Lawn tractor simulator https://github.com/ros-agriculture/lawn_tractor 09:12:52 From Matt Droter : To use GPS points https://github.com/ros-agriculture/gps_goal_server 09:25:23 From Jeff Sampson : Here is a time zone converter that seems to work well. https://www.worldtimebuddy.com/ 09:36:57 From Juan Riva : https://ubuntu.com/tutorials/ubuntu-on-windows#1-overview 09:37:40 From Juan Riva : https://docs.docker.com/engine/install/ubuntu/ 09:38:18 From Juan Riva : them docker run -p 6080:80 --device=/dev/input/js0 rosagriculture/tractor_sim 09:43:12 From Doug Thorpe : https://github.com/ros-agriculture/lawn_tractor/issues 09:43:33 From Matt Droter : URDF Tutorial - http://wiki.ros.org/urdf/Tutorials 09:47:19 From Matt Droter : Ackermann_vehicle https://github.com/jbpassot/ackermann_vehicle 09:51:05 From Matt Droter : How to program dones with ROS https://www.theconstructsim.com/start-programming-drones-using-ros-video-answer/

2020-12-04 18:01
The information on DJI drones using ROS was interesting. I found this: http://wiki.ros.org/dji_sdk

2020-12-04 18:12
Small learning drone that works with ROS https://m.dji.com/shop/tello-series

2020-12-04 18:17
This Is the one you have..?

2020-12-04 18:20
Yes, I bought one off of ebay.

2020-12-05 00:48
@ So I guess I'm having the issue that @ mentioned. I used the command ```$ wget https://raw.githubusercontent.com/ros-agriculture/lawn_tractor/master/docker/start.sh``` which is from the ROSAg https://github.com/ros-agriculture/lawn_tractor/blob/master/simulator.md because I thought I heard you say you updated it while we were on the call earlier. I'm not sure if that has anything to do with it the network error or not. I'll work to see if it is a permissions issue and try rebooting since hello world did not work either.

2020-12-05 00:51
Well it is pulling something down. Must have been a permissions issue.

2020-12-05 01:08
Running. Very cool. Plugged in my joystick as well and launched my joystick locally. Have not tried the browser based approach yet. Pretty neat.

2020-12-05 01:21
Guys if I send a 2D Nav goal on the opposite side of the green wall is the tractor supposed to drive around the wall instead of into the wall? I'm using the Docker container version of the simulator I loaded just a few minutes ago. cc; @ @

2020-12-05 01:37
no that shouldn?t be happening as a head on collision. I have seen it sometimes when the side of the tractor gets caught on the wall bc of the footprint parameter we have in the cost map

2020-12-05 02:44
Cool photo! Well, that might have saved you some work on the fence.

2020-12-05 02:45
well Al you don?t have a laser anyways right

2020-12-05 12:27
Well thats very good, beware, docker has his learning curve. It is good that you take his hand because it allows you to use ROS in W10 in a simple way. The most complicated thing that would follow that you should learn is to save your changes in the image with which you are working, because when you want to make a script and leave it in the container, if you do not save this, the next time you start it it will not be there because it's like it resets, which is good because you always go back to zero and decrease the things you break but it's bad because you lose things you did. Obviously, it can be solved with a couple of instructions that are nothing to write home about. Yesterday I' done the navegation by GPS in the SIM..:muscle: https://github.com/rje1974/Proyecto-Pochito/wiki/62_Simulador_gps_goal

2020-12-05 15:43
The marker obstacle might not be in the static map for navigation. If it isn't in the static map the global planner can't "see" it to make a plan around it.

2020-12-05 18:17
Recording from the lawn tractor meeting: https://youtu.be/lTqUMAUM1cc


2020-12-06 16:20
@ Did you get this to work? I wrote these instructions https://docs.google.com/document/d/1h8KBfLlauL9BOequsynvBv6zWGJgx93mxigbdvZZ8wA/edit?usp=sharing, but they don't work...yet. No output on cmd_vel, so the tractor does not move. 2D Nav goal in RVIS does work. The topic drive_path *does* produce output. cc: @

2020-12-06 16:25
We have two simulators in github. One uses VNC and the docker image is called tractor_sim. The other has the recent upgrades to move_base_flex. It doesn't use VNC and is called lawn_tractor. Which simulator are you running?

2020-12-06 16:27
I used this command from the instructions. ```$ wget https://raw.githubusercontent.com/ros-agriculture/lawn_tractor/master/docker/start.sh```

2020-12-06 16:28
which simulator does that lead to?

2020-12-06 16:30
Cool. That is the latest one: This line shows the docker image that is used: https://github.com/ros-agriculture/lawn_tractor/blob/master/docker/start.sh#L3

2020-12-06 16:31
Hi Al. I'm not quite sure what you're asking me; but if your question is if I did the gps_goal nav with the method that is in the link you attach, the answer is no .. I did it with the method that is in this link. https://github.com/rje1974/Proyecto-Pochito/wiki/62_Simulador_gps_goal

2020-12-06 16:47
I'm thinking my issue is using Docker I have: ROS_MASTER_URI=http://localhost:11311 but my Ubuntu physical machine is set up with a bashrc of: export ROS_MASTER_URI=http://controller_aj:11311 That's likely an issue since the python scripts are on my physical machine.

2020-12-06 16:50
@ My question is did you get these two python programs to work in the simulator to send move_base_flex this pre recorded path that seems to go East about 18 meters turns around and comes back?

2020-12-06 16:51
Don't think so.. That's the main advantage of docker. it is an environment within another environment. If you enter the bash of the container you are using, you will realize that it is different from your ubuntu

2020-12-06 16:55
This part in the start.sh script shares your computer network with the container network: --network="host" So if you start your docker container and then start the simulation. On your computer if you run $ rostopic list you 'should' be able to see all of the topics from the simulator running in the docker container. So if you run a ROS script on your computer it will first look for a ROS_Master to connect to. If your simulator is running it will find that one and publish to it.

2020-12-06 16:58
https://camo.githubusercontent.com/07966c815c136fce538d2dd04bff882273acbe619d4827356652bb3085e3819c/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f794a736e4f4c52756852544e63346b4461422f67697068792e676966 what you see in that gif is the result of running the gps_goal script in my simulator and it is explained step by step in this link. https://github.com/rje1974/Proyecto-Pochito/wiki/62_Simulador_gps_goal The truth is that everything looks pretty bad because of the quality of the gif. If you want, I can make a video with a better resolution and upload it. Matt explained to me a program that is simpler than the ones he had been using ..

2020-12-06 16:58
On my physical machine I did do a rostopic list and a bunch of move_base topics showed up so I assumed there was handshaking going on between my physical machine and the Docker container.

2020-12-06 16:59
no.. probably not. What is in the docker stays in the docker .. like las vegas .. unless you configure it so that it is not like that ..

2020-12-06 16:59
sorry i?m a bit out of pocket rn but are you having network issues with your docker

2020-12-06 17:00
yeah ensure network = host in ur start script

2020-12-06 17:00
also ensure that export ROS_MASTER_URI=http://localhost:11311

2020-12-06 17:00
the ./start.sh one..

2020-12-06 17:00
and ROS_HOSTNAME=localhost

2020-12-06 17:01
on both the container and the host machine

2020-12-06 17:01
@ I'm hoping it is an simple as updating my bashrc to point to ROS_MASTER_URI=http://localhost:11311 if I want to use Docker

2020-12-06 17:02
I had it pointing somewhere else

2020-12-06 17:03
Al, before continuing you should watch some video from docker .. And for now I would not touch those bash files because if it is the machine that you use the real robot, you will complicate it ..

2020-12-06 17:06
yeah ROS MASTER URI must be the same on both machines (docker and host)

2020-12-06 17:07
be sure to say ?export ROS_MASTER_URI? or else it will not persist

2020-12-06 17:07
?export ROS_MASTER_URI=http://localhost:11311%E2%80%99

2020-12-06 18:16
Unfortunately no luck using Docker. Switched back to all physical. No luck there either. When I do a rostopic info on drive_path it does not show any subscribers. Since the subscribe statement is in a class I'm not sure how that works. Just sharing fyi @ and @ in case it triggers a thought.

2020-12-06 18:18
Here you have a video of more quality than what I did with the gps_goal .. https://youtu.be/98mqbN103Q8

2020-12-06 18:19
@ are you able to run $ roscore on your local machine and start ROS?

2020-12-06 18:21
yes

2020-12-06 18:22
Is controller_aj hostname mapped in your /etc/hosts file?

2020-12-06 18:23
To start if this is mapped to your zeroteir vpn. Switch to using localhost like Vinny suggested ?export ROS_MASTER_URI=http://localhost:11311?

2020-12-06 18:24
Then try to start $ roscore

2020-12-06 18:26
Regarding your first question controller_aj is mapped only to my vpn ip, not to the local host ip

2020-12-06 18:27
Right. First rule in troubleshooting. "make it small" So to start let's switch the ROS_MASTER_URI to localhost

2020-12-06 18:27
Regarding Vinny's suggest I did do that earlier. Unfortunately updating the bashrc export command to the statement above did not produce any different results.

2020-12-06 18:27
It's okay. Get your local machine to start roscore on localhost

2020-12-06 18:28
Both machines should be pointing to the same ROS_MASTER_URI

2020-12-06 18:28
roger that

2020-12-06 19:24
Hello, I was thinking about the things that I take for granted in the configuration of the tractors and wanted to ask the following ... In the SIM and from what can be seen in this screenshot, the base_link is located on the seat and the base_footprint is its projection on the floor. I understand that we all have the same configuration in the simulator; but I suppose that in the different physical robot models this changes, although I am not sure. I get it; but I'm not one hundred percent sure, that in mine base_link is the robot's gps antenna and base_footprint would be the projection of base_link on the ground. Is this so or am I wrong ..?

2020-12-06 19:28
This tutorial will show you how to get your base_link: https://www.youtube.com/watch?v=7jOri9TkW0s

2020-12-06 19:48
@ I'm trying to test outside (i.e. the real world). I plugged in my joystick and received a new error. I'm using the same code that is https://github.com/ros-agriculture/tractor_teleop/blob/master/src/tractor_teleop/drive_teleop.py. Should I comment out lines 74-77 in my local copy of this code? cc: @

2020-12-06 19:51
yes I guess. I am not familiar with this tractor teleport package but just know you will lose the ability to cancel using your joy

2020-12-06 19:51
it also seems like your joy is not connected

2020-12-06 19:52
I simply disconnected it to come back in from the 31 degree weather

2020-12-06 19:53
yeah feel free to comment out that code. one of these days when you test outside, let me know id be happy to block out some time to be on standby sorry I have been particularly out of pocket , i?m doing some apartment hunting

2020-12-06 19:54
maybe even be on zoom alongside you

2020-12-06 20:24
I received this message after having restarted but the joystick (at least the steering) seems to be working.

2020-12-06 23:50
this is something strange. how are you launching this?

2020-12-06 23:51
These variables are all intialized at the top of the file... I wonder is it due to rosparams not being set?

2020-12-07 07:08
This is indeed really interesting. I find that the Python API does a much better job in controlling the drone and getting a clearer video feed than the original smartphone app :smile:

2020-12-07 15:18
Yes, I thought the video feed was impressive. I have never used the h264 compression in ROS. Seems like a winner.

2020-12-11 18:31
Notes from the lawn tractor meeting: 09:36:58 From Matt Droter : TEB planner tutorials http://wiki.ros.org/teb_local_planner/Tutorials 09:41:25 From Matt Droter : VR worlds and ROS - https://github.com/h2r/ros_reality 10:10:27 From Matt Droter : Olin Robotics https://github.com/olinrobotics/gravl/wiki 10:15:09 From Matt Droter : https://index.ros.org/ 10:23:21 From Matt Droter : https://readthedocs.org/ 10:24:35 From Matt Droter : https://ros-planning.github.io/moveit_tutorials/

2020-12-11 20:33
Software stack for car-like robots. This uses a pure pursuit controller. Includes path following and obstacle detection. https://github.com/cogsys-tuebingen/gerona

2020-12-11 20:46
@ TEB planner config to use less backing up: ? *weight_kinematics_forward_drive* (double, default: 1.0)Optimization weight for forcing the robot to choose only forward directions (positive transl. velocities). A small weight (e.g. 1.0) still allows driving backwards. A value around 1000 almost prevents backward driving (but cannot be guaranteed). Right now we aren't changing the default value of this parameter: https://github.com/ros-agriculture/lawn_tractor/blob/master/lawn_tractor_navigation/config/teb_local_planner_params_carlike.yaml There are more configuration options in RQT dynamic reconfigure.

2020-12-12 00:51
@ What is the brand and model of your lawn tractor that has the variable speed belt transmission. I have never sen that before. The variable speed transmission that Matt's Snapper mower has is pretty clever.

2020-12-12 12:52
testing (real world) ....I just started and moved the tractor straight (East) a few meters. A little confused why I would be at -7 for "x"

2020-12-12 12:54
@ If you are around, try Jitsi to teleconference, I know, I know, yet another platform to learn.... https://meet.jit.si/ROSAg_lawntractor

2020-12-12 13:08
Had these errors so restarting

2020-12-12 13:25
Hmmm, when I set a 2D nav goal I get this message

2020-12-12 13:28
I don't understand what result you had

2020-12-12 13:30
No output on cmd_vel, no path planned

2020-12-12 13:32
not good

2020-12-12 13:35
"Could not get robot pose," seems to be a critical part of the message

2020-12-12 13:35
yet odom seems to be publishing fine

2020-12-12 13:35
in my opinion you have a problem with navigation. you should review all the relevant topics and the location of the tractor. not going to be that the load of the simulator forces the topics like Jeff told you. Make a couple of simple movements that you can reason with the cardinal and coordinate points, record some bagfiles

2020-12-12 13:36
TF seems OK

2020-12-12 16:02
The first minute of this is the tractor running cmd_vel commands to show steering is under control. The commands were input using *https://gist.github.com/jones2126/8c7cacccf426cd36f965f23a71ad4dce*

2020-12-12 16:21
AL, you are using the joy there..?

2020-12-12 16:22

2020-12-12 16:23
no joy, straight cmd_vel

2020-12-12 16:26
and you still have those weird negative numbers ..?

2020-12-12 16:30
Hi, I'm lost with this error. Someone has an idea why this could be happening. I already reloaded the teensy. update my system ...

2020-12-12 16:40
@ The "-7 for x" comes from this line: https://gist.github.com/droter/c96e12deea000cac4da566dac2c91c23#file-gps_odom-py-L58 It is the distance from your _GPS_origin_lat and _GPS_origin_long to your current GPS position. Good to verify that your position and orientation of your robot makes sense. This is needed for move_base_flex.

2020-12-12 16:41

2020-12-12 17:02
Will do it again

2020-12-12 21:16
Looks like progress. This _*https://github.com/ROBOTIS-GIT/turtlebot3/issues/383*_ led me to installing ntp time syncing on both laptop and RPi Path is planned and cmd_vel is publish in the real world. Unfortunately it is raining and I have the tractor covered so I am delayed by weather. :(

2020-12-12 21:27
@ I don't recall seeing that error specifically. Google returned: https://discourse.ros.org/t/mismatched-protocol-version-in-packet-lost-sync-or-rosserial-python-is-from-different-ros-release-than-the-rosserial-client/3450, https://github.com/ros-drivers/rosserial/issues/354, https://github.com/ros-drivers/rosserial/issues/214 hits. After reading those I remember most of my issues like that are resolved by: resetting the connection to the board or re-imaging the firmware.

2020-12-13 01:08
Thanks Al.. Looking to this one..

2020-12-13 01:09
@what you mean by reseting the connection..?

2020-12-13 03:41
@ For me I have multiple boards connected to the RPi via USB ports so "resetting the connection" is unplugging and re-plugging the USB connection. A few times I have been required to have the USB port recognized again.

2020-12-13 12:14
ok

2020-12-13 12:34
@, I am glad that you are making progress. I recommend two readings, because they were very useful to me. I use chrony because in the work scenario that we consider we may not have internet. It would also not hurt to add something like "time on the base" and "time on the robot" to your control panel. https://pimylifeup.com/using-ntp-on-linux-with-chrony/ https://www.raspberrypi.org/forums/viewtopic.php?t=69582 goodbye and good end of the weekend .. P.S. 1. On the other hand, I realized that that part about time and its synchronization was missing in my documentation and clearly it should be a chapter in the general project. P.S. 2. I also noticed that my base machine has broken dependencies and I don't know if it's working. I would be sure that in my robot yes. P.S. 3. Unfortunately I am stuck with those mistakes of yesterday .. It seems to me that I am going to assemble the electronics from scratch again ..

2020-12-13 15:09
Is working okay from the arduino ide? Here is a tutorial on how to setup your teensy to connect to your raspberry pi. https://youtu.be/kuduS0S3wO0

2020-12-13 15:35
Yes @, I'm able to flash and do the blinking; but there is something in the system that in breaking the rosserial. I had some doubt if the roslib I was putting on it was wrong; but look in a backup for the one we used when you came. I am leaving it for the next week, because I am on a business trip to Buenos Aires and I will not be able to touch the tractor. Although it is something that has me frustrated, I have a lot to work on the simulator.:man-shrugging::skin-tone-2:

2020-12-13 15:39
@ remember to add it to the spreadsheet

2020-12-13 15:48
You will want to try to use a ros node on the teensy after the blink program. You will need to rebuild your ros_lib library here http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup#Install_ros_lib_into_the_Arduino_Environment

2020-12-13 15:54
@ Thank you I will look to add that. I was looking this morning and it seem ntpdate is actually deprecated. I'm not sure why the fella from that post just a few months ago advocated installing it. Anyway, it appears the ubiquity image has crony installed already so I simply need to update my laptop image.

2020-12-13 16:05
@ I currently have the lat/lon for the RTK correction base station. I don't recall why I put that in there. At the time I think I simply wanted something close. What are you using? Do you use your farm map (0, 0) lat/lon?

2020-12-13 17:43
There is an example of connecting to an arduino from the lawn_tractor_sim here: https://www.youtube.com/watch?v=TrL4Mw5o3F8&feature=youtu.be&t=216 The software is installed in the docker container.

2020-12-16 01:22
MTD Ranch King

2020-12-16 18:06
Tutorial for starting the lawn tractor simulator in a docker container: https://youtu.be/6XZhe9EKqd8

2020-12-18 02:05
Sorry in 15 minutes se began


2020-12-18 18:25
Notes from the lawn tractor meeting: 09:18:45 From Al Jones : https://openwrt.org/docs/start 09:35:28 From Al Jones : https://arstechnica.com/information-technology/2020/10/spacex-starlink-bringing-free-internet-to-some-texas-kids-in-early-2021/ 09:43:35 From Matt Droter : PiFi network https://github.com/rohbotics/pifi 10:06:09 From Matt Droter : Farm-NG autonomous electric tractor for market growers and researchers https://www.youtube.com/watch?v=_mUN2Q6hcUU https://farm-ng.com/ https://github.com/farm-ng/tractor 10:23:56 From Matt Droter : Homebrew Robotics Club - https://www.hbrobotics.org What: Weekly informal ROS discussion When: Tuesday evenings at 7 pm PST Where: https://zoom.us/j/92376743464

2020-12-18 23:07
@ Juan, I was thinking about your network description. Do you have a main network in your house and a router in your garage. So addresses on your main network are different than the addresses on the router in your garage? Or was it more complicated than that?

2020-12-19 00:35
Thanks Jeff for your interest. I have a Mikrotik routerboard that holds a dhcp server and serveral reputed that relay thier dhcp to the first one.. I will try to draw it..

2020-12-19 00:35
That's a second layer

2020-12-19 00:47
I guess my question is... Do you have multiple routers in your network?

2020-12-19 00:53
Yes. Five or seven, depending in which part of the network you are

2020-12-19 01:03
Well, each time you add a router it will create new addresses (new subnets). Or if you use Ethernet swicthes insted of routers then it is is one continuous network. So if you have a router in your garage (for instance) then unplug the cable from the router port (they may call it uplink port) and plug into one of the Ethernet switch ports. Then all of the other cables plugged into the switch ports will be on the same network as the main network. Its addresses will not be converted to new subnets. If you have an wireless port on that router (I don't remeber what the correct name is) , I'm not sure if it is connected to the switch side or the router side. This would be the same as replacing your router box with an Ethernet switch box. But it should do the same thing on the router box. Let us know what the results are... Maybe I am missing the point here...

2020-12-19 01:18
To expand on this... Without repeating how you are getting your Internet access,,, :slightly_smiling_face: I think you want a device that connects to your Internet source (some form of wireless). That has to go to a router to create your local addresses for your entire local net work. This will create local DHCP for all devices. Then I think you want direct connected devices or use Ethernet switches to expand the number of ports. Then all devices will share the same local network and your single router will track all IP addresses through the single DCHP server.

2020-12-19 01:20
Rural internet it's not reliable. So for all working you always have multiple dhcp server in different layers. Let me draw it..

2020-12-19 10:42
Yesterday we talked about a lot of things about networks, but I wanted to leave these two packages that I think are important to solve some problems that we face or at least reduce them .. 1. openwrt and zerotier. https://kysonlok.github.io/2020/06/12/Set-Up-a-ZeroTier-Network-on-OpenWRT/ https://github.com/mwarning/zerotier-openwrt/wiki 2. openwrt and ntrip. https://openwrt.org/packages/index/network---ntrip

2020-12-19 11:06
Jeff, thanks for your interest. During the week I make it more beautiful but I did not want to leave the question unanswered .. So that the sloppy drawing is understood a little better. I receive the internet at my mother's house by fiber, through a ubiquiti routerboard I order it and from there I send it to my farm by a bridge made with two ubiquiti antennas. At the farm I receive it and order it again with a mikrotik routerboard that provides dhcp and nat services to a node with panels and several routers that are below it. Internet can go through two or three dhcp and nats before reaching the robot and currently when I navigate or do my missions, as they are short distances I use the wifi network that creates the ubiquiti robotics image; but I am limited to a range of about 200 meters when my objective is two or three kilometers inside my farm.

2020-12-19 16:17
Could this be separated into two problems: 1. how to set up a network to test the robot 2. how to set up a network to cover 10km^2 90% of your robot testing will be done 50 meters from where you are sitting.

2020-12-19 20:14
Well maybe I am missing something. If you have WiFi that will cover your entire property, then it seems it should also cover your front yard and inside of your house. (Of course that depends on the geometry of your property.) Therefore it seems that your vehicle could always connect to the same WiFi network. So whither you are testing or doing real work, it seems that the single network would work for both. So I don't see why you would have to switch networks to do testing.

2020-12-19 20:20
For my situation. I have a house in town. It is basically at a corner of the city block. My area of operation would be the city block (Or possibly an the adjacent block). I'm thinking I could just move my Linksys router to my roof and it may have enough power to cover the area I would run in. I need to try that some. But I assume a router on my roof will cover the inside of my house and I would have a single WiFi network to cover everything. But I won't know until I try it...

2020-12-19 20:53
Since I am thinking about this, I just checked. My laptop is connected to my access point. And I ran a separate Ethernet cable between the laptop and Ethernet switch. I get the same subnet on both interfaces. So I would have the option of using either without having to remap subnet addresses. I may still have a problem of IP addresses randomly changing depending when they were assigned. But I could probably use hostnames or static IP addresses to lock those down. If I decide to walk around the block with a laptop, does anybody have suggestions on how to monitor signal strength or signal quality?

2020-12-19 23:24
Hi Jeff, you can use g-mon app or wifi-man ..

2020-12-19 23:26
I'll look at those. I also thought of wifi-radar. Or I could start a YouTube video and view the dropped frames window...


2020-12-19 23:36
This one has a signal recorder..

2020-12-19 23:58
I don't know why I can not find the link in the app store

2020-12-20 20:39
I just tried my Linksys router outside. It is a WRT54GS V7.2. It looks relatively cheap but it does have two antennas. I just put it on top of my car and then I used an Android tablet to monitor. It was running something called Wifi analyser. I poked at the menus until I got a single screen with a big signal strength bar for just my connection. The signal dropped off pretty quickly as I walked away. I could get about halfway down one side of the block and I lost the signal. I would just randomly get a small signal along the back side of the block. So what I have isn't usable. Maybe if I put it on the roof I would get better line-of-site. Possibly the setup menu would have a way to increase transmit power. A better receiver (as opposed to my cheap tablet) may help. I have another Linksys router. It is slightly larger and looks slightly more industrial. It has has longer antennas (because I just found one of those). But I have no idea where it is. I never did anything with it because it has Open-WRT software on it and I didn't want to figure it out. So some day it will just turn up again.

2020-12-20 21:05
the roof is sure to be your best option. In my case I have it there; but nothing solves the issue of line of sight better than cell phones and that's why this talk began .. openwrt is not going to fix your signal problem. For that there are special products that must be in both ends, because it is both a problem of the transmitter and the transmitter and there everything becomes expensive and you will also be tied to a physical space where your base is... As Christmas approaches and my wife begins to get stressed by the visit of her family, I am becoming more and more interested in this topic. :joy:

2020-12-21 00:09
I found my other router. It is a Linksys WRT54G and it has DD-WRT software on it. I see it is set to 28mw transmit power. It says I can turn that up to 251mw. Maybe increasing that will give adequate range. Or maybe I will have to have another router at the robot end (in client mode) and turn its power up also. And I will have to figure out how to configure these things...

2020-12-21 00:09
@, I've been seeing how to work in readthedocs and as far as I understand it is just as bad as the github wikis, so I think that as you stated we should work in github .. How do you think we should organize ourselves ..? And how can I help you..?

2020-12-21 00:47
Yes, the one I have on the roof of my house with the rtk node is one of those ...

2020-12-21 02:16
@, I looked at readthedocs and agree that it really isn't what we are looking for, although I did appreciate it's translation aspects. The GitHub Wiki in the Lawnmower project seems workable and I created a couple of Wiki docs. I think the next step to use that to create a sort of index to existing documentation, such as the Google docs, and look at the Slack archive that Matt saved for material to include in it.

2020-12-21 13:26
It seems to me that you are correct .. We have to put together an index and understand that we are going to change it many times .. The main problem with wikis is that initial index. Perhaps the best thing is that we bring two proposals to the meeting on Tuesday ..?

2020-12-24 18:10
Did some work on converting the Slack Archive and current channels on Slack for the Github Wiki. https://drive.google.com/drive/u/0/folders/1mKTMifC31zR9tCrthoQsyt8ViprhNuWg. Using a PHP file in the archive called "slack2html.php". However there seems to be an issue with this script in that it doesn't include the slack images references to the resulting HTML file https://drive.google.com/file/d/19MLD1y6n-xrdTbCVq6L36vx2AJfbEZ1v/view?usp=sharing (although the image URLs exist in the .json files in the archive's directory). [Edit: I was able to revise the slack2html.php file to include the images in the output!] Also, there seems to be an issue not being able to show images using the Github Wiki. Tried to copy and paste into the Github Wiki editor but it didn't take the images. Attempting to edit the markup of the Wiki file didn't create a image in the Wiki file as expected (editor's "add image" function didn't work for non-github images). Slack archives linked at https://github.com/ros-agriculture/lawn_tractor/wiki/40_Lawn_Tractor_Slack_channel_content_repository_About

2020-12-24 20:23
Not easy to manage files in github wiki.. :man-shrugging:

2020-12-26 17:59
@ @ What do you think about this documentation format: https://fjp.at/diffbot/components/

2020-12-27 00:51
Nice, not sure about the images and how to display them.. take a look at this https://github.com/ros-agriculture/lawn_tractor/wiki/1_Lawn_Tractor_Robot_Basic_Supplies

2020-12-27 23:25
That looks pretty good. I like the table of contents features. To do something like that wouldn't we have to host the Wiki on a different server than GitHub?

2020-12-28 21:10
*gps_goal in Docker...progress, but still not working....*Using Docker rosagriculture/tractor_sim and gps_goal also inside of the same Docker container I?m able to launch the package and receive correct info messages, but a plan is never created or executed.   `[rosout][INFO] 2020-12-28 15:35:04,554: Connected.` `[rosout][INFO] 2020-12-28 15:35:04,559: Waiting for a message to initialize the origin GPS location...` `[rospy.internal][INFO] 2020-12-28 15:35:23,607: topic[/local_xy_origin] adding connection to [http://b7883cbb5394:37081/], count 0` `[rospy.internal][INFO] 2020-12-28 15:35:23,612: topic impl's ref count is zero, deleting topic /local_xy_origin...` `[rospy.internal][INFO] 2020-12-28 15:35:23,612: topic[/local_xy_origin] removing connection to http://b7883cbb5394:37081/` `[rosout][INFO] 2020-12-28 15:35:23,614: Received origin: lat , long -96.5121989984.` `[rospy.internal][INFO] 2020-12-28 15:35:48,436: topic[/gps_goal_fix] adding connection to [http://b7883cbb5394:45293/], count 0` `[rosout][INFO] 2020-12-28 15:35:48,439: The distance from the origin to the goal is 9.816 m.` `[rosout][INFO] 2020-12-28 15:35:48,439: The azimuth from the origin to the goal is 91.251 degrees.` `[rosout][INFO] 2020-12-28 15:35:48,440: The translation from the origin to the goal is (x,y) -9.714, -1.417 m.` `[rosout][INFO] 2020-12-28 15:35:48,442: Executing move_base goal to position (x,y) -9.71367083323, -1.41697750921, with 0 degrees yaw.` `[rosout][INFO] 2020-12-28 15:35:48,443: To cancel the goal: 'rostopic pub -1 /move_base/cancel actionlib_msgs/GoalID -- {}'` `[rosout][INFO] 2020-12-28 15:35:48,443: Inital goal status: _has_header` In the rosout.log there is a reference to ?/move_base/parameter_updates] Failed to get a plan.?  Google suggests, https://answers.ros.org/question/242505/failed-to-get-a-plan-with-teb_local_planner/ ?...you should verify your costmap footprint??;  I looked around, but not really having much luck at this point. @, @ any tips on what to look for? @ Helped a bunch to get me to this point. btw, 2DNav Goal works fine in the same Docker container as long as I don't try to plan a path through the green block.

2020-12-28 21:39
@ Are you using the original `gps_goal` package (from apt?)

2020-12-28 21:43
confirmed, original

2020-12-28 21:43
ok trying to recreate on my side


2020-12-28 23:13
Just for those who are following: we were having really strange callback errors in the `gps_goal` package.

2020-12-28 23:21
`gps_goal` as is won't work in the new container, since the action server tie in is not compatible with move base flex

2020-12-29 15:56
Maybe there is something more.. I get it working with my coordinates but when i thry Al s it does not work.. think it does not like north of the ecuador poses.. :grinning:

2020-12-29 16:46
I get an error about the costmap.. surely is something about configuration in the coordinates on de ros system.. that's why my coordinates work and Al's don't..


2020-12-30 01:38
Yeah I can confirm, we are getting points off of the global planner for some reason

2020-12-30 01:44
Even when I give gps_goal the origin it yells at me

2020-12-30 20:43
I resolved the issue with displaying external images in the GitHub wiki repository of the Slack archives indexed at https://github.com/ros-agriculture/lawn_tractor/wiki/40_Lawn_Tractor_Slack_channel_content_repository_About by discovering the correct wiki markup for doing that.

2020-12-31 00:26
@ I can confirm, when I simply use @?s origin and goal statement, with no other changes the tractor moves due East. gps_goal calculated 43 meters at 88 degrees.

2020-12-31 00:42
If I try using coordinates in Pennsylvania (e.g. lat/lon or origin and goal ~40.345/-80.128), without making any other changes, I receive the error, "The goal sent to the global planner is off the global costmap. Planning will always fail to this goal."

2020-12-31 17:07
Created a non-mooseproofed, but more concise version of some subjects in the 2018-2019 archive, edited down to remove banter, meeting notes, and the like, is at https://github.com/ros-agriculture/lawn_tractor/wiki/50_Servo-Steering-Speed-Sensor-Safety-&-Sample-Subjects

2020-12-31 17:17
I am having trouble figuring out if this just means that our map is too small and if the gps points are actually just out of bounds. This is a hard issue to troubleshoot, maybe we should pull up MapViz

2021-01-01 19:37
@ Thanks for working on this. I think I'm going to see if I can get @?s waypoint navigation working in Docker he mentioned here. @ Did you ever try Matt's waypoint navigation?

2021-01-01 23:25
This example will only follow a path. It doesn't do any planning.

2021-01-08 02:00
Hello, we started with ROS-A simulator nights .. !!!!!! https://meet.google.com/fkd-eujc-cfx

2021-01-08 18:03
Notes from the lawn tractor meeting: 09:52:14 From Doug Thorpe : http://AgOpenGPS.discourse.group 10:01:11 From Doug Thorpe : https://github.com/ros-agriculture/lawn_tractor/discussions