mfassler / atdrive-moab

Motor and I/O control board (firmware)
GNU General Public License v3.0
2 stars 4 forks source link

how to connect pixhawk through moab board which acts as motor controller #3

Closed siddharthcb closed 4 years ago

siddharthcb commented 4 years ago

hello mark, i am having difficulties in connecting a pixhawk through a nucleo moab board. how do i make connection between the two? i am using a brushless dc motor, is brushless ESCs necessary? or can the moab be programmed to connect the pixhawk? i tried sbus connections between the two but did not work. i have also connected moab to a jetson nano. Photo_20-04-13-09-29-52 767

mfassler commented 4 years ago

Hello,

The S.Bus connector on the Moab is an input. It is intended to receive data directly from a receiver, like this image:

https://github.com/mfassler/atdrive-moab/blob/master/docs/block-diagram.pdf

The Moab is not intended to work with the Pixhawk (or any other controller). The Moab is the controller.

siddharthcb commented 4 years ago

thanks for the reply. since i want to connect my rover to mission planner, is it possible to just transmit data from pixhawk to moab board and then to motor?

mfassler commented 4 years ago

There is another repo:

https://github.com/mfassler/atdrive-moab-tools

(This is the software that runs on the auto-pilot computer.)

In moab-tools, there's a daemon called LocationServices.py. That daemon has a Mavlink connection to Mission Planner (I use APM Planner). From there, you can upload a mission to the auto-pilot.

(The Moab itself has no knowledge of Mavlink. Moab is intended to be fairly simple.)

siddharthcb commented 4 years ago

Thank you. As I am fairly new to Moab and Mission Planner, I would like to know how to interface the daemon to Mission Planner. My end goal is to be able to control my robot with a FUTABA RC in manual mode and also through waypoint navigation from Mission Planner in Auto mode. How do i configure this setting through the Moab board. The robot has 2 brushless DC motors and no servo motors.

what parameter should i change in the locationservices.py to be able to connect to mission planner?

mfassler commented 4 years ago

In moab-tools, there's a file called:

ROBOT_CONFIG_default.py

copy that file to: ROBOT_CONFIG.py

And change the settings.

Moab, by itself, will run in manual mode without an auto-pilot computer. You can test your motors that way. The outputs of PWM1 and PWM2 are the motor outputs. They might work with brushless motors... By default, the pulse-widths are set for Futaba-style servos. By default, one channel is for steering and one channel is for throttle. If you need skid-mode, then there's a separate branch called "skid-mode". If you need different PWM settings (outside the range of a typical servo), then you might have to change the code yourself...

siddharthcb commented 4 years ago

i am using a serial port instead of PWM1 and PWM2 to control motors . if i connect the futaba receiver to the board through sbus i can access manual mode. i have connected jetson nano to the moab which acts as my robots cpu. how do i send new mission each time to the board through mavlink?

mfassler commented 4 years ago

If you are using motors with a serial-port connection, then you'll probably want to look at Rasheed's code. He wrote the serial-port output. I haven't looked at his code yet.

For the Mavlink mission, what I do is this:

in APM Planner, I edit the mission, In the bottom-left hand of the "edit waypoints" screen, there's a button called "write". Click on that, and APM Planner will send the mission over Mavlink.

LocationService.py should receive the mission via Mavlink. It will save the mission into its own current directory, in a file called "CURRENT_MISSION_int.txt". Your auto-pilot software must read that file.

siddharthcb commented 4 years ago

initially how do i make connection in mission planner. since i am not using pixhawk. Here+ gps body is directly connected to gps port of moab and moab is in turn connected to jetson nano. how do i arm? basically how do i establish connection with mission planner? should i use a cross cable connection or a usb connection from moab?

mfassler commented 4 years ago

The Moab does not talk to mission planner.

In atdrive-moab-tools, there is a service called "LocationServices.py". It needs to run on the auto-pilot computer. From there, you need to edit "ROBOT_CONFIG.py" to set the IP address of your mission planner computer.

The auto-pilot computer and your laptop will talk via ethernet or wifi.

siddharthcb commented 4 years ago

you mean ROBOT_CONFIG__OFFICE.py in atdrive-moab-tools?

mfassler commented 4 years ago

Yes. Copy that (or any of the ROBOT_CONFIG files) to:

ROBOT_CONFIG.py

and then edit the settings to your own IP address

mfassler commented 4 years ago

May I ask what company you work for?

siddharthcb commented 4 years ago

Thank you. i work for a robotic company in Tokyo

siddharthcb commented 4 years ago

which gps module have you used? is here+ gps compatible with the moab? if so how do i connect?

mfassler commented 4 years ago

Usually, this is the GPS module we use:

https://www.gnss.store/gnss-gps-modules/101-zed-f9p-rtk-receiver-board-with-multiband-antenna-l1-l2-lis3mdl.html

You can use a HERE+ GPS module if you want. In either case, you'll have to build a custom cable.

(Some versions of the HERE+ GPS have a tiny, little switch on the inside that can switch between CANbus or i2c. It needs to be in the i2c position.)

In the atdrive-moab repo, in the docs/hardware directory, you can see how we connect it.

mfassler commented 4 years ago

May I ask where you got your Moab board from?

siddharthcb commented 4 years ago

thank you so much.. i reckon it was purchased from stm website online.

the here+ i use is this, it has a safety switch on the outside, did you mean the same ? here+

and i also have a rtk2 zedf9p ublox module purchased from sparkfun. Photo_20-04-14-09-46-06 576

which one do you recommend to go with?

mfassler commented 4 years ago

For the HERE+, you might have to open up the plastic case and look at the circuit board inside. On some of the HERE+ GPS modules, there's a switch on the circuit board that can switch between CANbus and i2c.

For those red circuit boards -- I have no idea what those are.

siddharthcb commented 4 years ago

alright, those red circuit boards are the rtk2 ublox gps and rover modules similar to the one you are using.. in your connection picture, you have used both gps and gps_mag ports and also one wire from futaba is connected to ext port. why is it so? in case of HERE+, what difference will it have since it has got a standard inbuilt wire that can fit in GPS port of moad?

mfassler commented 4 years ago

The wiring for the HERE+ isn't identical to the Moab. You'll have to build a custom cable.

About the picture where the Futaba receiver has a wire connected to an ext port: The very first version of the Moab board didn't have +5V to the SBus connector, so I had to get +5V from the ext connector. That bug should be fixed on all subsequent boards. (I forgot about that... maybe I should re-do those pictures...)

siddharthcb commented 4 years ago

Thanks for the clarification. My autopilot computer is a Jetson Nano which is inside the bot. This is connected to the moab through a lan cable. Should I add the locationservices.py and other programs to this jetson? Also, my external computer is another Jetson Nano. I must create the waypoint mission on this system and then send it over to the autopilot jetson inside the bot right? How do i do this? Furthermore, will the waypoint file that is created itself give the driving directions to the motors through the MOAB board?

The FUTABA recever fits directly into the 3 pin SBUS port and works fine, so I dont need to do additional cabling right? As for the GPS, should HERE module wiring be changed to the configuration as mentioned in your pin diagrams ? Can you share any pictures or newer updates on the wiring of the entire system if you have any?!

mfassler commented 4 years ago

You've got the right idea for the big picture. Keep in mind, that I haven't published any auto-pilot code yet. Are you a customer or a business partner? If so, please contact us directly. If not, then you'll have to write the auto-pilot code yourself. (I intend to publish a free, open-source example for the auto-pilot, but I haven't gotten around to it yet.)